先來看兩段代碼:


第一段代碼要比第二段高效很多,這是由于在CBO 優化模式下,Oracle可以將外層的查詢條件推到內層查詢中,以提高內層查詢的執行效率。第一段代碼中,第二層的查詢條件WHERE ROWNUM <= 40就可以被Oracle推入到內層查詢中,這樣Oracle查詢的結果一旦超過了ROWNUM限制條件,就終止查詢將結果返回了。
ROWNUM是一個偽列,用于記錄返回結果集中每一行的行號。ROWNUM是在查詢結果返回之后計算的,因此它并不是存儲在表中的實際列。ROWNUM的作用是用于限制查詢結果的行數,可以在SELECT語句中使用WHERE子句和ORDER BY子句,實現分頁查詢或篩選查詢結果。

其中,start_row和end_row分別表示查詢的起始行和結束行。
舉例說明:
查詢operation表前五行

需要注意:1.Rownum是Oracle數據庫中的一種偽列,它不是一個真實的列,而是Oracle在運行時自動分配給每一行的一個行號。
2.ROWNUM是在查詢結果返回之后再進行排序的,因此需要使用子查詢來實現分頁查詢
3.在使用ROWNUM函數實現分頁查詢時,需要注意排序的方式,以確保查詢結果的正確性。
上一篇: Oracle數據庫中表的構成
下一篇: 利用for循環實現一個簡單的冒泡排序



