MySQL的JOIN原理
生活随笔
收集整理的這篇文章主要介紹了
MySQL的JOIN原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
表連接算法
Nested Loop Join(NLJ)算法:
首先介紹一種基礎算法:NLJ,嵌套循環算法。循環外層是驅動表,循壞內層是被驅動表。驅動表會驅動被驅動表進行連接操作。首先驅動表找到第一條記錄,然后從頭掃描被驅動表,逐一查找與驅動表第一條記錄匹配的記錄然后連接起來形成結果表中的一條記。被驅動表查找完后,再從驅動表中取出第二個記錄,然后從頭掃描被驅動表,逐一查找與驅動表第二條記錄匹配的記錄,連接起來形成結果表中的一條記錄。重復上述操作,直到驅動表的全部記錄都處理完畢為止。這就是嵌套循環連接算法的基本思想,偽代碼如下。
首先加載t1,然后從t1中取出第一條記錄,之后加載t2表,與t2表中的記錄逐個匹配,連接匹配的記錄。
Block Nested Loop Join(BNLJ)算法:
再介紹一種高級算法:BNLJ,塊嵌套循環算法,可以看作對NLJ的優化。大致思想就是建立一個緩存區,一次從驅動表中取多條記錄,然后掃描被驅動表,被驅動表的每一條記錄都嘗試與緩沖區中的多條記錄匹配,如果匹配則連接并加入結果集。緩沖區越大,驅動表一次取出的記錄就越多。這個算法的優化思路就是減少內循環的次數從而提高表連接效率。
總結
以上是生活随笔為你收集整理的MySQL的JOIN原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 8系列之重新认识HashMap
- 下一篇: Spark 资源调度及任务调度