一條SQL語(yǔ)句變得巨慢的原因及其解決方法

[導(dǎo)讀] 現(xiàn)象:一條sql突然運(yùn)行的特別慢。 select uidtable column_value, first_name|| ||last_name, company, job_title, upper(member_level), upper(service_value)from (select * from table(select c

現(xiàn)象:一條SQL突然運(yùn)行的特別慢。

出錯(cuò)原因:用戶增加了一個(gè)條件member.site=test,造成連接的順序變化了,原來(lái)的驅(qū)動(dòng)表是uidTable(最多1024條記錄),現(xiàn)在變成了member表做驅(qū)動(dòng)(600W條)。所以這條語(yǔ)句變的巨慢。

但是既然是外連接,為什么連接的順序會(huì)改變呢?因?yàn)橥膺B接的連接順序不是由COST決定的,而是由連接的條件決定的。發(fā)現(xiàn)執(zhí)行計(jì)劃如下:

為什么根本就沒(méi)有執(zhí)行外連接呢?問(wèn)題出在member.site=’test’這個(gè)條件上,因?yàn)閷?duì)外連接的表加了條件,造成外連接失效。改為member.site(+)=’test’后,問(wèn)題徹底解決。

?以上就是?一條SQL語(yǔ)句變得巨慢的原因及其解決方法的內(nèi)容,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP中文網(wǎng)(www.php.cn)!

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊15 分享