二 索引列和连接谓词的关系基于优化系列的背景,如下面的连接谓词定义了deptno列上的emp和dept表之间的连接: p.deptno = deptno .deptno 如果索引列是连接谓词的一部分,那么:在执行查询时,使用什么类型的连接方法来实现连接? 2.1 哈希/排序合并连接:使用哈希连接和排序合并连接,外部表的信息在连接时不可用,以启用对内部表的行查找;而是分别访问两个表,然后将结果数据连接起来。不能仅使用基于连接列的索引来探测哈希或排序合并的内部表。这是这些连接类型使用的实现机制的固有限制。嵌套循环连接的不同之处在于它们允许对连接列进行索引查找。 2.2 嵌套循环连接:嵌套循环连接工作通过读取外部表,然后使用收集到的信息来探测内部表。该算法允许在内部表上进行索引查找。 只有嵌套循环连接才能允许在内部表上仅基于连接列进行索引查找: 另外,连接顺序是否允许使用索引? 当使用嵌套循环连接时,必须先访问嵌套循环连接的外部表,然后才能在内部表上使用索引。检查查询的解释计划,以确定使用了哪个访问路径以及访问表的顺序。由于这个限制,表的连接顺序很重要。 例如:如果我们像上面那样使用“EMP. deptno = DEPT .deptno”谓词将EMP连接到DEPT,并且在EMP. deptno上有一个索引(假设在查询中没有与EMP. deptno相关的其他谓词),如果EMP在DEPT之前被访问,那么当时没有行值存在,可以用来查找EMP. deptno索引中的行,因为我们还没有访问任何对象来提供这样的查找键。在这种连接顺序下,使用索引的唯一方法是使用全索引扫描或索引快速全扫描(读取整个索引)。在这种情况下,有可能选择全表扫描(FTS)成本更低。
Oracle SQL语句为什么不走索引-场景四
来源:这里教程网
时间:2026-03-03 20:49:50
作者:
编辑推荐:
- Oracle SQL语句为什么不走索引-场景四03-03
- 软件签名添加时间戳03-03
- 长沙岳麓区家具城,全屋软装一站式搞定03-03
- Java 中,== 和 .equals() 有何不同?03-03
- bin$表头的Oracle回收站03-03
- 绿钻潘多拉奢石餐桌,品味自然奢华盛宴03-03
- 快速修复系统的方法03-03
- [20241113]建立显示某个内存段的通用脚本disp_addr.sh.txt03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 软件签名添加时间戳
软件签名添加时间戳
26-03-03 - OPatch安装补丁将Oracle 19.3升级到19.23
OPatch安装补丁将Oracle 19.3升级到19.23
26-03-03 - Oracle数据库如何模拟ORA-600 [4193]错误?如何解决?
Oracle数据库如何模拟ORA-600 [4193]错误?如何解决?
26-03-03 - shutdown abort关库,真的有可能起不来吗?
shutdown abort关库,真的有可能起不来吗?
26-03-03 - 又是windown服务器断电引起的ora-00333
又是windown服务器断电引起的ora-00333
26-03-03 - 同事不小心drop column了一个列,真的凉凉了吗?
同事不小心drop column了一个列,真的凉凉了吗?
26-03-03 - 数据库数据恢复—Oracle数据库数据恢复案例
数据库数据恢复—Oracle数据库数据恢复案例
26-03-03 - 企业数据管理是否“镜花水月”
企业数据管理是否“镜花水月”
26-03-03 - Oracle自动处理表空间不足脚本
Oracle自动处理表空间不足脚本
26-03-03 - 如何一键完成20个Oracle实例运维脚本部署
如何一键完成20个Oracle实例运维脚本部署
26-03-03
