| 類型 | 語義 | 關鍵字 | 結果集 |
|---|---|---|---|
| INNER JOIN | 雙向匹配,僅保留雙方都有的行 | INNER JOIN / JOIN | 交集 |
| LEFT JOIN | 左表全保留,右表無匹配則 NULL | LEFT [OUTER] JOIN | 左表全集 + 右表匹配 |
| RIGHT JOIN | 右表全保留,左表無匹配則 NULL | RIGHT [OUTER] JOIN | 右表全集 + 左表匹配 |
MySQL 不支援 FULL JOIN,可用 LEFT JOIN UNION RIGHT JOIN 模擬。
uid=3 用戶無文章 → INNER JOIN 不出現,LEFT JOIN 出現(文章欄位 NULL)aid=4 文章無對應用戶 → INNER JOIN 不出現,RIGHT JOIN 出現(用戶欄位 NULL)SELECT SQL_NO_CACHE t1.name, t2.name FROM t1 LEFT JOIN t2 ON t1.name = t2.name WHERE t2.name IS NULL LIMIT 30; SELECT SQL_NO_CACHE t1.name, t3.name FROM t1 LEFT JOIN t3 ON t1.name = t3.name WHERE t3.name IS NULL LIMIT 30;
| JOIN 對象 | 耗時 | EXPLAIN 關鍵欄位 |
|---|---|---|
| t2 (utf8) | 0.0010 秒 | type=ref, Extra=Using where; Using index |
| t3 (gb2312) | 0.1871 秒 | type=ALL, Extra=Using where |
差兩個數量級!

type=ALL,每行需轉換字符集後比對utf8mb4SQL_NO_CACHE 測試真實性能,避免查詢快取干擾