4、选择最有效率的表名顺序(只在基于规则的优化器中有效)
ORACLE 的解析器按照从右到左的顺序处理 FROM 子句中的表名,因此 FROM 子句中写
在最后的表(基础表 driving table)将被最先处理。在 FROM 子句中包含多个表的情况
下,你必须选择记录条数最少的表作为基础表。当 ORACLE 处理多个表时,会运用排序及合
并的方式连接它们。首先,扫描第一个表(FROM 子句中最后的那个表)并对记录进行派序,
然后扫描第二个表(FROM 子句中最后第二个表),最后将所有从第二个表中检索出的记录与
第一个表中合适记录进行合并。
例如:
表 TAB1 16, 384 条记录
表 TAB2 1 条记录
选择 TAB2 作为基础表(最好的方法):
select count(*) from tab1, tab2; --执行时间 0.96 秒
选择 TAB2 作为基础表(不佳的方法):
select count(*) from tab2, tab1; --执行时间 26.09 秒
如果有 3 个以上的表连接查询,那就需要选择交叉表(intersection table)作为基
础表,交叉表是指那个被其他表所引用的表。
例如:
EMP 表描述了 LOCATION 表和 CATEGORY 表的交集:
select *
from location l, category c, emp e
where e.emp_no between 1000 and 2000
and e.cat_no = c.cat_no
and e.locn = l.locn;
将比下列 SQL 更有效率:
select *
from emp e, location l, category c
where e.cat_no = c.cat_no
and e.locn = l.locn
and e.emp_no between 1000 and 2000;
5、 WHERE 子句中的连接顺序
ORACLE 采用自下而上的顺序解析 WHERE 子句,根据这个原理,表之间的连接必须写
在其他 WHERE 条件之前, 那些可以过滤掉最大数量记录的条件必须写在 WHERE 子句的末尾。
例如:
--低效,执行时间 156.3 秒
select *
from emp e
where sal > 50000
and job = 'MANAGER'
and 25 < (select count(*) from emp where mgr = e.empno);
--高效,执行时间 10.6 秒
select *
from emp e
where 25 < (select count(*) from emp where mgr = e.empno)
and sal > 50000
and job = 'MANAGER';
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
768次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
650次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
576次阅读
2025-04-20 10:07:02
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
532次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
522次阅读
2025-04-17 17:02:24
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
499次阅读
2025-04-22 00:20:37
一页概览:Oracle GoldenGate
甲骨文云技术
484次阅读
2025-04-30 12:17:56
火焰图--分析复杂SQL执行计划的利器
听见风的声音
455次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
381次阅读
2025-04-15 14:48:05
OR+DBLINK的关联SQL优化思路
布衣
377次阅读
2025-05-05 19:28:36