博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL优化案例-union代替or(九)
阅读量:2447 次
发布时间:2019-05-10

本文共 819 字,大约阅读时间需要 2 分钟。

随着Oracle版本的提升,优化器更趋向于智能,比如,12c中的标量子查询被transform成外连接。

select (select max(object_id) from test2 b where b.object_id =a.object_id) from test1 a;

11g中执行计划如下:

进入正题,当SQL中同时有or和子查询时,这种情况下查询无法展开(unnest),遇到这种情况只能改SQL来改变执行计划,并且在12c或18c中都没有智能改写。

select * from test1 where owner = 'SCOTT' or object_id in (select object_id from test2);

在不改写SQL的情况下我们在test2的join列上建立索引

create index idx_objid on test2(object_id);

下面用union改写sql

select * from test1 where owner = 'SCOTT' union select * from test1 where object_id in (select object_id from test2);

案例较为简单,希望通过此案例让大家了解优化器的一些行为,和unnest产生filter的一些情形。

|  作者简介

姚崇·沃趣科技高级数据库技术专家

熟悉Oracle、MySQL数据库内部机制,丰富的Oracle、MySQL故障诊断、性能调优、数据库备份恢复、复制、高可用方案及迁移经验。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28218939/viewspace-2221561/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28218939/viewspace-2221561/

你可能感兴趣的文章
xbmc_从iPhone或iPod Touch控制XBMC
查看>>
编程爱好者网站_读书爱好者的最佳免费网站
查看>>
为什么运行微波会杀死Wi-Fi连接?
查看>>
matlab生成文本乱码_如何生成完全随机/乱码文本的段落
查看>>
siri捷径调用谷歌翻译_告诉它使用Google助理,以减少Siri的麻烦
查看>>
outlook转发邮件步骤_Microsoft Outlook中的快速步骤指南
查看>>
macos 托盘文件预览_如何在Ubuntu的文件管理器中快速预览文件(如macOS中的“ Quick Look”)...
查看>>
macos 快速启动启动台_无法获取macOS通知? 这是解决方法(无需重新启动)
查看>>
为什么您可能不应该将您的企业网站运出家门
查看>>
如何在Android上使用Amazon Underground免费获取大量应用内购买
查看>>
如何使用HDHomeRun在计算机,游戏机和其他设备上观看直播电视
查看>>
如何在没有智能手机的情况下使用Google Authenticator和其他两因素身份验证应用程序...
查看>>
如何显示密件抄送人员地址_什么是密件抄送,以及为什么不使用它会成为一个可怕的人...
查看>>
询问HTG:增强Wi-Fi连接性,校准显示器并执行基于计算机的恶作剧
查看>>
将code添加到上下文菜单_通过将选项卡添加到资源管理器,创建上下文菜单项等来轻松调整Windows 7和Vista...
查看>>
询问HTG:选择要备份的文件,将扫描仪用作复印机,并将iPad配置为第二台显示器...
查看>>
es dsl 提取不重复值_询问操作方法:诊断DSL挂断,从PowerPoint中提取媒体,将IE限制为单个网页...
查看>>
在Boxee中使用Pandora
查看>>
linux创建交换分区设置_如何在Linux上创建交换文件
查看>>
vim 关闭查找_如何打开或关闭查找我的iPad
查看>>