FIRST_ROWS和FIRST_ROWS_n的区别
[@more@]FIRST_ROWS和FIRST_ROWS_n的区别
1、 FIRST_ROWS_n是在9i之后引入的,应该说FIRST_ROWS模式在9i之后就应该被废弃,之所以还使用主要是因为为了向下兼容的目的。
2、 FIRST_ROWS是为了返回前几行,应该说是FIRST_ROWS_1相似。
3、 FIRST_ROWS这种模式使用的过程中,CBO会使用一些约束,而这些约束将会限制CBO对表之间的连接模式的选择,其中就有一个是对hash连接的选择,而使用嵌套连接的方式,这样就需要对一个表进行全表扫描,或者使用索引。例如排序order by和group by的时候。这时候系统会使用索引,而且往往这些索引的时候,会是使得SQL的执行花费比较高。就是说在需要排序的时候,Oracle在FIRST_ROWS这种模式下会使用索引(排序的列上的索引),无论这个索引的使用是否高和低。
这是Oracle的一个bug,而这个在11g中就没有存在,但是由于这个问题的存在(8,9,10),所以建议慎重使用这个参数的使用。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/222350/viewspace-1001438/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/222350/viewspace-1001438/