FIRST_ROWS和FIRST_ROWS_n的區別
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- FIRST_ROWS和FIRST_ROWS(N)的區別 (zt)
- ../和./和/的區別
- 和 的區別
- as 和 with的區別
- ||和??的區別
- /*和/**的區別
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- ./ 和sh 的區別
- JQuery this和$(this)的區別jQuery
- jquery $(this) 和this的區別jQuery
- T和?的區別
- ++a和a++的區別
- makefile =和:=的區別
- Mybatis中#{}和${}傳參的區別及#和$的區別小結MyBatis
- 和區別
- MYSQL和SQL的區別MySql
- varchar和char的區別
- &self 和 self 的區別
- var和public的區別
- filter和interceptor的區別Filter
- useEffect 和 useLayoutEffect 的區別
- SDK和API的區別?API
- var 和 let 的區別
- WebApi和MVC的區別WebAPIMVC
- service和systemctl的區別
- GET和POST的區別?
- GET和POST的區別
- button和submit的區別MIT
- GET 和 POST 的區別
- 【Java】equals 和 == 的區別Java
- django和flask的區別DjangoFlask
- promise 和 Observable 的區別Promise
- sass和less的區別
- POST 和 GET 的區別
- cookie和session的區別CookieSession
- MTV和MVC的區別MVC
- mysql中!=和is not的區別MySql