當前位置:
首頁 > 知識 > MySQL的JOIN——優化實踐之內循環的次數

MySQL的JOIN——優化實踐之內循環的次數

這次主要講述如何優化內循環的次數。內循環的次數受驅動表的記錄數所影響,驅動表記錄數越多,內循環就越多,連接效率就越低下,所以盡量用小表驅動大表。先插入測試數據。

MySQL的JOIN——優化實踐之內循環的次數


內連接誰當驅動表

實際業務場景中,左連接、右連接可以根據業務需求認定誰是驅動表,誰是被驅動表。但是內連接不同,根據嵌套循環演算法的思想,t1內連接t2和t2內連接t1所得結果集是相同的。那麼到底是誰連接誰呢?謹記一句話即可,小表驅動大表可以減小內循環的次數。下面用 STRAIGHT_JOIN強制左表連接右表。By the way,STRIGHT_JOIN比較冷門,在這裡解釋下,其作用相當於內連接,不過強制規定了左表驅動右邊。詳情看這MySQL的JOIN(一):用法

MySQL的JOIN——優化實踐之內循環的次數

對於第一條查詢語句,t1是驅動表,其有10000條記錄,內循環也就有10000次,這還得了?

對於第二條查詢語句,t2是驅動表,其有100條記錄,內循環100次,感覺不錯,我喜歡!

這些SQL語句的執行時間也說明了,當內連接時,務必用小表驅動大表。

最佳實踐:直接讓MySQL去判斷

但是,表的記錄數是會變化的,有沒有一勞永逸的寫法?當然有啦,MySQL自帶的Optimizer會優化內連接,優化策略就是上面講的小表驅動大表。所以,以後寫內連接不要糾結誰內連接誰了,直接讓MySQL去判斷吧。

MySQL的JOIN——優化實踐之內循環的次數

上面6條內連接SQL,MySQL的Optimizer都會進行優化。

文章摘自博客園


中公優就業 幫你成就職業夢:

IT教育專業培訓:https://www.ujiuye.com/

IT職業在線教育:https://xue.ujiuye.com/

大數據時代下做java開發工程師:https://www.ujiuye.com/zt/java/?wt.bd=lsh11tt

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT優就業 的精彩文章:

深入理解計算機系統——操作系統的抽象概念
你之所以不優秀,是因為你只走容易的路
這些書不用藏在課本下看!
那些年 藏在課本下的雜誌
JAVA 線程的幾種狀態

TAG:IT優就業 |