网站首页 > 数据库 / 正文
什么是回表
当对一个列创建索引之后,索引会包含该列的键值以及键值对应行所在的rowid。 通过索引中记录的rowid访问表中的数据就叫回表。执行计划中的TABLE ACCESS BY INDEX ROWID就表示回表
select * from dba_objects where owner='SYS'
回表对SQL性能的影响
回表一般是单块读,回表次数太多会严重影响SQL性能,如果回表次数太多,就不应该走索引扫描了,应该直接走全表扫描。 Oracle12c及后面版本的新功能批量回表(TABLE ACCESS BY INDEX ROWID BATCHED)在一定程度上改善了单行回表(TABLE ACCESS BY INDEX ROWID) 的性能。
select * from dba_objects where owner='SYS'
什么样的SQL回产生回表
查询列不在索引中就会产生回表。
例如:以下语句一定会产生回表,如果回表次数太多,会严重降低SQL性能。
Select * from table where ...
消除回表
我们通常会建立组合索引来消除回表,从而提升查询性能。当要查询的列也包含在索引中,这个时候就不需要回表了。直接通过rowid对查询到所需要的列数据。
Tags:oracle的优化
- 上一篇:10个SQL优化规则
- 下一篇:Oracle数据库性能调优实践(一)——概述
猜你喜欢
- 2024-11-26 Oracle Fusion SCM云助力企业优化供应链物流
- 2024-11-26 oracle date类型数据 查询优化
- 2024-11-26 ORACLE在SUSE 12上安装部署优化官方资料
- 2024-11-26 Oracle优化:什么情况下该创建索引,什么情况下不创建索引
- 2024-11-26 微软将使用甲骨文Oracle云服务器,优化Bing对话式搜索
- 2024-11-26 Oracle数据查询和操作策略:优化数据管理的秘籍
- 2024-11-26 oracle物化视图使用总结和优化索引
- 2024-11-26 多表关联查询的性能优化技巧:预关联
- 2024-11-26 Linux面试题Oracle优化
- 2024-11-26 推荐一Oracle书籍--高可用、数据处理、性能优化、系统维护、监控