如題,今天在寫SQL的時候遇到一個非常怪的問題,總共只有4000條記錄的一個查詢陳述句整整執行了12分鐘,這讓人無法忍受!所以特地的explain了一下,結果如下圖
我詫異的發現圖中竟然出現了meger join outer并且耗時在16K左右,再仔細往里面看發現耗時的主要原因就是buffer sort,百度、谷歌了一下都沒有我中意的答案,有沒有大哥碰到過類似的問題,給我解答一下,不甚感激。oracle 版本為11.0.4.0
uj5u.com熱心網友回復:
看到很多cost為0的操作,先把涉及到的表與索引的統計資訊收集一遍再看計劃。uj5u.com熱心網友回復:
1、看不到樓主整個計劃的全貌,因此,也不能詳細的確認和分析,但個人認為buffer sort的cost可能是錯的,那個節點的cost應該很低;2、整個SQL可能包含多個子SQL形成的union all,主要的cost應該在頭兩個子SQL,而第二個子SQL的cost主要消耗在其中的一個NL節點上,而非buffer sort節點,具體如圖紅線所示。
uj5u.com熱心網友回復:
不好意思,我也不知道怎么編輯已經發出的帖子,只能再發一樓,干脆說下第一個子SQL的瓶頸點,和上面回帖中的第二個子SQL類似,也是一個NL節點,具體如圖中紅線所示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/29781.html
標籤:開發
上一篇:優化SQL陳述句
下一篇:SQL 求和最大
