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