軟件測試開發技術MySQL Join 實現原理分析 MySQL 數據庫
【IT168 專稿】在MySQL 中,只有一種 Join 算法,就是大名鼎鼎的 Nested Loop Join,他沒有其他很多數據庫所提供的 Hash Join,也沒有 Sort Merge Join。顧名思義,Nested Loop Join 實際上就是通過驅動表的結果集作為循環基礎數據,然后一條一條的通過該結果集中的數據作為過濾條件到下一個表中查詢數據,然后合并結果。如果還有第三個參與 Join,則再通過前兩個表的 Join 結果集作為循環基礎數據,再一次通過循環查詢條件到第三個表中查詢數據,如此往復。
還是通過示例和圖解來說明吧,后面將通過我個人數據庫測試環境中的一個 example(自行設計,非MySQL 自己提供) 數據庫中的三個表的 Join 查詢來進行示例。
注意:由于這里有些內容需要在MySQL 5.1.18之后的版本中才會體現出來,所以本測試的MySQL 版本為5.1.26
表結構:
1 sky@localhost : example 11:09:32> show create table user_group\G
2
3 *************************** 1. row ***************************
4
5 Table: user_group
6
7 Create Table: CREATE TABLE `user_group` (
8
9 `user_id` int(11) NOT NULL,
10
11 `group_id` int(11) NOT NULL,
12
13 `user_type` int(11) NOT NULL,
14
15 `gmt_create` datetime NOT NULL,
原文轉自:http://www.anti-gravitydesign.com