Maison  >  Article  >  base de données  >  一条SQL语句变得巨慢的原因及其解决方法

一条SQL语句变得巨慢的原因及其解决方法

黄舟
黄舟original
2017-02-20 11:38:131597parcourir

[导读] 现象:一条SQL突然运行的特别慢。 select uidTable column_value, first_name|| ||last_name, company, job_title, upper(member_level), upper(service_value)from (select * from table(select c

现象:一条SQL突然运行的特别慢。




出错原因:用户增加了一个条件member.site=test,造成连接的顺序变化了,原来的驱动表是uidTable(最多1024条记录),现在变成了member表做驱动(600W条)。所以这条语句变的巨慢。


但是既然是外连接,为什么连接的顺序会改变呢?因为外连接的连接顺序不是由COST决定的,而是由连接的条件决定的。发现执行计划如下:





为什么根本就没有执行外连接呢?问题出在member.site='test'这个条件上,因为对外连接的表加了条件,造成外连接失效。改为member.site(+)='test'后,问题彻底解决。

 以上就是 一条SQL语句变得巨慢的原因及其解决方法的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn