一條SQL語(yǔ)句變得巨慢的原因及其解決方法
來(lái)源:易賢網(wǎng) 閱讀:1005 次 日期:2014-08-25 11:42:47
溫馨提示:易賢網(wǎng)小編為您整理了“一條SQL語(yǔ)句變得巨慢的原因及其解決方法”,方便廣大網(wǎng)友查閱!

現(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 cast(multiset

(select b from bbb)as Taaa) from dual)) uidTable,member

where uidTable.column_value = member.login_id(+)

and member.site='alibaba' and member.site='test';

出錯(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ì)劃如下:

-------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost |

--------------------------------------------------------

| 0 | SELECT STATEMENT | | 1018 | 72278 | 8155 |

| 1 | NESTED LOOPS | | 1018 | 72278 | 8155 |

| 2 | VIEW | | 4072 | 69224 | 11 |

| 3 | COLLECTION ITERATOR SUBQUERY FETCH| | | | |

| 4 | TABLE ACCESS FULL | DUAL | 4072 | | 11 |

| 5 | TABLE ACCESS FULL | BBB | 41 | 287 | 2 |

| 6 | TABLE ACCESS BY INDEX ROWID | MEMBER | 1 | 54 | 2 |

|* 7 | INDEX UNIQUE SCAN | MEMBER_SITE_LID_PK | 4 | | 1 |

-------------------------------------------------

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

---------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost |

-----------------------------------------------------

| 0 | SELECT STATEMENT | | 1018 | 72278 | 8155 |

| 1 | NESTED LOOPS | | 1018 | 72278 | 8155 |

| 2 | VIEW | | 4072 | 69224 | 11 |

| 3 | COLLECTION ITERATOR SUBQUERY FETCH| | | | |

| 4 | TABLE ACCESS FULL | DUAL | 4072 | | 11 |

| 5 | TABLE ACCESS FULL | BBB | 41 | 287 | 2 |

| 6 | TABLE ACCESS BY INDEX ROWID | MEMBER | 1 | 54 | 2 |

|* 7 | INDEX UNIQUE SCAN | MEMBER_SITE_LID_PK | 4 | | 1 |

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看數(shù)據(jù)庫(kù)
易賢網(wǎng)手機(jī)網(wǎng)站地址:一條SQL語(yǔ)句變得巨慢的原因及其解決方法
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)