SQL最佳化問題

mcxiaoracle發表於2022-07-29

今天遇到一個oracle 最佳化問題,因為是資料庫是接近2百萬的資料,查詢出來會比較慢,最後檢視了一下是對應的分頁問題:

使用rownumer解決,而不是偽劣,區別在哪裡呢?

使用rownum進行排序的時候是先對結果集加入偽劣rownum然後再進行排序,而row_number()在包含排序從句後是先排序再計算行號碼。


SELECT  *
FROM    (
        SELECT  /*+ INDEX_ASC(t index_on_column) NOPARALLEL_INDEX(t index_on_column) */
                t.*, ROWNUM AS rn
        FROM    table t
        ORDER BY
                column
        )
WHERE rn >= :start
      AND rownum <= :end - :start + 1


結果換成row_number 竟然好了,真是奇怪了,





推薦閱讀:

https://www.cnblogs.com/tyyking/p/10664944.html

https://blog.csdn.net/weixin_31942999/article/details/116368455





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

相關文章