回表:
所谓的回表,就是先查索引,找到相对应的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查相对应的数据