MySQL有哪幾種join方式,底層原理是什麼?

網上有相關的文章,總結的挺好,這裏不再重複碼字,這裏提幾個點。

 

一,Block Nested-Loop join的理解

 

相對來說Block Nested-Loop join是最難理解的。

Block Nested-Loop join是如何批量操作的?

Block Nested-Loop join爲什麼能提升性能?

Block Nested-Loop join是使用了Buffer,就提高了性能,還是說批量操作有什麼特殊之處?

個人理解應該是:使用了Buffer,提高了性能。爲什麼這樣說呢?因爲驅動表的數據是逐行加載到內存的,如果把驅動表需要的數據提前加載到Buffer,相當於減少了很多次磁盤IO,這樣就顯著提高了性能。

 

也就是說這裏的批量操作,實際上指的是批量加載驅動表的數據到內存。

這個理解是個人觀點,如果有不對的地方,歡迎大家留言交流。

 

二,驅動表與非驅動表的概念

 

以table1 left join table2 爲例,哪個是驅動表?

答:table1是驅動表。table2爲非驅動表,或者叫匹配表。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章