SQL高級查詢(三)——Oracle分頁查詢

分頁查詢(rownum關鍵字)

Oracle在查詢數據的時候對每一條記錄進行編號並且命名爲rownum,我們可以對rownum進行篩選,選擇我們需要的部位,就達到了分頁查詢的效果。

 

 

 

更高效查詢:

--效率更高

       SELECT * FROM(

              SELECT emp.*,ROWNUM rowno FROM emp

                WHERE ROWNUM<結束索引位置

       ) E WHERE E.rowno >=開始索引位置;

 

上面的SQL語句執行效率更高,因爲在第一步,查詢所有結果並且編號時,Oracle在編號的行號等於結束索引位置之後,就會停止讀取數據,不再編號。

如果使用第一種方法編號,會讀取所有的記錄,

而第二種方法編號,只會讀取結束索引位置的記錄數。

 

注意:兩個篩選條件不能交換位置,因爲Oracle是先讀取再編號,所以如果交換位置,Oracle每次讀取數據都會比較是否滿足條件,因爲不滿足條件,所以讀取的數據會被捨棄掉,並且編號也會繼續從1開始,這樣就會導致永遠無法讀取到任何數據。

 

 

比如:

 SELECT emp.*,ROWNUM rowno FROM emp

                WHERE ROWNUM<10

Oracle讀取表中第一條數據,然後編號,因爲是第一條數據,所以編號爲1,1不滿足<10的條件,捨棄。

Oracle讀取表中第二條數據,然後編號,因爲之前沒有數據被保留,所以編號依舊爲1,1不滿足<10的條件,捨棄。

……

因此,即使讀取到最後一條記錄,rownum還是1,不會被讀取。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章