oracle 语句优化问题select nvl(sum(a.sl),0),nvl(sum(a.je),0)from ta

oracle 语句优化问题
select nvl(sum(a.sl),0),nvl(sum(a.je),0)
from tablea a
left join tableb b
on a.zd = b.zd
where a.zd2 in ('181','180','179','178','177','176','175')
and nvl(b.zd3,'xx') = 'xx'
类似这样的语句 zd、zd2是字段 都有索引
在plsql的解释计划里看 耗费、基数都很小 但是查询速度极慢
我不是知道不是没走zd2 zd3 自己的索引.
有没有什么优化方法 实在太慢了
水采田 1年前 已收到1个回答 举报

天后天后天后 花朵

共回答了18个问题采纳率:94.4% 举报

把 nvl(b.zd3, 'xx') = 'xx' 改为 and ( b.zd3='xx' or b.zd3 is null )
这样就走zd3的索引了,先处理左边的话就不走zd3的索引了

1年前

2
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.011 s. - webmaster@yulucn.com