Oracle 查询优化改写(第三章)

第三章 操作多个表

1.Union 与 OR

当在条件里面有or时,经常会改写为UNION,例如,我们在表emp中建立下面两个索引。

Oracle 查询优化改写(第三章)_第1张图片 

 Oracle 查询优化改写(第三章)_第2张图片

 我们对比一下PLAN,会发现or走的FULLTABLE,而union使用的两列中的索引,从提高效率。

但在改写时,UNION的去重功能有时会被忽略,从使数据出现错误,如下面的语句。

Oracle 查询优化改写(第三章)_第3张图片

 Oracle 查询优化改写(第三章)_第4张图片

 Oracle 查询优化改写(第三章)_第5张图片

 Oracle 查询优化改写(第三章)_第6张图片

 2.组合相关的行

Oracle 查询优化改写(第三章)_第7张图片

 3.inner join、left join、right join、full join

Oracle 查询优化改写(第三章)_第8张图片

 

 Oracle 查询优化改写(第三章)_第9张图片

 Oracle 查询优化改写(第三章)_第10张图片

 

 

 Oracle 查询优化改写(第三章)_第11张图片

 Oracle 查询优化改写(第三章)_第12张图片

 Oracle 查询优化改写(第三章)_第13张图片

 

 Oracle 查询优化改写(第三章)_第14张图片

 Oracle 查询优化改写(第三章)_第15张图片

 Oracle 查询优化改写(第三章)_第16张图片

 Oracle 查询优化改写(第三章)_第17张图片

 

 Oracle 查询优化改写(第三章)_第18张图片

 Oracle 查询优化改写(第三章)_第19张图片

 4.先聚集在与内连接外连接

Oracle 查询优化改写(第三章)_第20张图片

 Oracle 查询优化改写(第三章)_第21张图片

 Oracle 查询优化改写(第三章)_第22张图片

5.从多个表中返回丢失的数据 

推荐使用FULL JOIN

 

 Oracle 查询优化改写(第三章)_第23张图片

 Oracle 查询优化改写(第三章)_第24张图片

 Oracle 查询优化改写(第三章)_第25张图片

 6.多表查询时的空值处理

Oracle 查询优化改写(第三章)_第26张图片

 Oracle 查询优化改写(第三章)_第27张图片

 参考文献:Oracle查询优化改写技巧与案例2.0  作  译  者:有教无类,落落

你可能感兴趣的:(数据仓库,oracle,数据库)