如何避免TABLE ACCESS BY INDEX ROWID回表
1、在数据中,当查询数据的时候,在索引中查找索引后,获得该行的rowid,根据rowid再查询表中数据,就是回表。如下例子:新建查询窗口。

2、新建查询语句。
select *
from sys_user a
inner join sys_user_role b
on a.id = b.user_id
inner join sys_role c
on b.role_id = c.id
where a.login_name = admin

3、查看执行计划。分析是否在表中创建索引。查询条件是否涉及非索引字段。

4、查询全部数据*涉及到先索引查询对应的rowid,然后根据rowid再次查询数据。我们改写只查询索引列,即可消除回表。
5、改写:
select a.id, c.id
from sys_user a
inner join sys_user_role b
on a.id = b.user_id
inner join sys_role c
on b.role_id = c.id
where a.id = 1;

6、查看执行计划。没有回表。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:133
阅读量:125
阅读量:65
阅读量:20
阅读量:29