通過兩張 4 行的城市表(table1/table2),以 city 為關聯鍵,逐行演示三種 JOIN 的輸出機制,助你徹底搞懂「誰為主、誰補 NULL、誰被過濾」。
table1: (Person A,BJ) (Person B,BJ) (Person C,SH) (Person D,SZ)
table2: (Person W,BJ) (Person X,SH) (Person Y,SH) (Person Z,NJ)
SELECT * FROM table1 LEFT JOIN table2 ON table1.city = table2.city;
結果 4+2+1=7 行,左表無行丟失。
結果 7 行,右表無行丟失。
JOIN 無前綴 = INNER JOIN。FULL JOIN;需 LEFT UNION RIGHT 模擬。EXPLAIN SELECT ... -- 觀察 type=ref/eq_ref、rows、Extra=Using where
若 rows 接近全表掃描,檢查索引、字符集、條件下推。