关于cache提示的请教(大家都发表下自己的理解)
select /*+ cache(a) */ * from table_name a
如上提示语法的使用,可以将a表全部load到内存中进行计算加快速度,但是这种情况一般适于a表比较小的时候,如果a表比较大的话会占用很多的内存.
一般关联查询的时候一个表往往只使用其中的几个字段,如果a表有4G的话全部load到内存中是无法想象的,pro*C++是配合oracle开发出现的,它可以只将a表中指定的字段load到内存中,这样的话可能占用的内存只有几十MB或者上百MB,不会对性能带来太大的影响,大幅度提高了速度.
我们公司似乎倾向于pro*C++的开发,对于我们数据库开发人员来说,我们的处理方法和那些用pro*C++的处理方法在操作速度上是没有可比性的,我很想在他们面前突出数据库的重要性,但这点让我很尴尬.
所以我想请教,oracle能不能也实现将指定字段load到内存中进行操作?
比如建立一个view,选出a表中需要的字段,然后select /*+ cache(b) */ * from view_name b,不知道这种方法是不是错误的方法,如果大家对cache有不同的理解请多多发表意见.
如果先从a表中选取指定的字段建临时表c,再将临时表c放到内存中,似乎方法也不错,但是建c表也是需要相当的开销.