FIRST_ROWS和FIRST_ROWS_n的區別

litterbaby發表於2008-03-25

FIRST_ROWS和FIRST_ROWS_n的區別

[@more@]

FIRST_ROWSFIRST_ROWS_n的區別

1、 FIRST_ROWS_n是在9i之後引入的,應該說FIRST_ROWS模式在9i之後就應該被廢棄,之所以還使用主要是因為為了向下相容的目的。

2、 FIRST_ROWS是為了返回前幾行,應該說是FIRST_ROWS_1相似。

3、 FIRST_ROWS這種模式使用的過程中,CBO會使用一些約束,而這些約束將會限制CBO對錶之間的連線模式的選擇,其中就有一個是對hash連線的選擇,而使用巢狀連線的方式,這樣就需要對一個表進行全表掃描,或者使用索引。例如排序order bygroup by的時候。這時候系統會使用索引,而且往往這些索引的時候,會是使得SQL的執行花費比較高。就是說在需要排序的時候,OracleFIRST_ROWS這種模式下會使用索引(排序的列上的索引),無論這個索引的使用是否高和低。

這是Oracle的一個bug,而這個在11g中就沒有存在,但是由於這個問題的存在(8910),所以建議慎重使用這個引數的使用。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/222350/viewspace-1001438/,如需轉載,請註明出處,否則將追究法律責任。