作者:稀饭
当需要优化的Oracle-SQL语句比较长的时候,可以将Oracle-SQL拆分为三段,这样就能快速判断Oracle-SQL语句在写法上是否容易产生性能问题,拆分的规则如下:
select (第一段) from (第二段) where (第三段);
(1)第一段
select与from之间最好不要有标量子查询(即一个子查询介于select与from之间),也不要有自定义函数,因为有标量子查询或者自定义函数时,会导致子查询或函数中的表被反复扫描,造成性能问题。
(2)第二段
from与where之间要关注大表,因为大表很容易引起性能问题,同时要留意子查询和视图,如果有子查询或者视图,需要单独运行,看运行的快还是慢,如果运行的慢需要单独优化。另外,要注意子查询或者视图是否可以进行谓词推入(当SQL语句中包含有不能合并的视图,并且视图有谓词过滤,也就是where过滤条件,CBO会将where过滤条件推入视图中,这个就叫做谓词推入),是否会出现视图合并。最后,还要留意表与表之间是内连接还是外连接,因为外连接会导致嵌套循环无法驱动表。
(3)第三段
where后面的内容需要特别注意子查询,要判断各种子查询在写法上是否可以进行展开,同时也要注意where过滤条件,尽量不要在where过滤列上使用函数,这样会导致不走索引。
广告区↓

文章转载自稀饭居然不在家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




