Oracle回表與sql的優化


回表:

所謂的回表,就是先查索引,找到相對應的rowid,然后再通過rowid找到對應的數據。

所以,如果select * from XXX一定會出現回表的,畢竟你不可能把所有的列都建索引。

例如:

select * from bp_packing_report where create_date>sysdate-1/24

耗費:3656

 

 改為:

select create_date from bp_packing_report where create_date>sysdate-1/24

就不會出現回表現象了,因為在查詢索引的時候就已經把數據查出來了,不再需要再根據rowid查對應的列內容了。

僅耗費57

 

區別上面兩個圖,上面比下面多了個 TABLE ACCESS BY INDEX ROWID BATCHED   就是表示根據rowid查相對應的數據

 

參考:https://ask.naixuejiaoyu.com/question/1450


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM