mysql sql优化书籍_MySQL SQL优化的正确姿势
大家好,我是知數堂SQL 優化班老師 網名:騎龜的兔子
已經很久沒寫文章了 今天分享一篇優化SQL 案例
slow query 里有如下 SQL
看下執行計劃如下
從執行計劃可以看出C表全表掃描了
那我們看具體的SQL
從具體SQL 中可以看出?where 條件里能達到好的過濾條件的 應該是
B表?,那先看下B表相關條件有沒有索引
從上圖所示,我們知道了 是有索引的,那應該案例來說,B表應該當驅動表,但實際沒有?,而是C表當了驅動表 為啥呢 ?
我們都知道MySQL 是基于COST 的優化器??如果 B?當驅動表的話?那連接順序應該是 B->A->C?顯然在這個過程中哪個地方的COST 太高了?所以最終沒選擇這個執行計劃。
我們重點看下?A->C 的連接條件
我們看下 這個連接條件所對應的C表的索引情況
從這可以看到 C表 對應的連接條件?在索引里不是前導列,也就是第一個列
所以問題就出現在這里了 。
那到此,我們先測試下,單獨創建一個單列索引
然后看下執行計劃
嗯 達到了我們的預期效果。看下具體執行效果
我的新一輪的SQL 優化課 即將在春節后開課
我是知數堂SQL 優化班老師~ ^^
如有關于SQL優化方面疑問和一起交流的請加 并且 @兔子@知數堂SQL優化
高性能MySQL,SQL優化群 有葉金榮,吳炳錫 兩位大神坐鎮 :579036588
歡迎加入 知數堂大家庭。
我的微信公眾號:SQL開發與優化(sqlturning)
總結
以上是生活随笔為你收集整理的mysql sql优化书籍_MySQL SQL优化的正确姿势的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java存储三元组_在4store中添加
- 下一篇: java中function实现_Java