首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

SQL 查詢效率:LEFT JOIN 優於隱式連接(笛卡爾積)

     編輯:程式設計疑難解答

對比

-- 1. 顯式 LEFT JOIN(推薦)
SELECT T3.ID, T3.NAME
FROM ZY_UNIT_WARD T1
LEFT JOIN XT_UNIT T2 ON T1.UNITID = T2.ID
LEFT JOIN zy_ward T3 ON T2.ID = T3.UNITID
WHERE T2.ID = 8;

-- 2. 隱式連接(舊寫法,效率低)
SELECT T1.ID, T1.NAME
FROM zy_ward T1, XT_UNIT T2, ZY_UNIT_WARD T3
WHERE T1.ID = T3.WARDID AND T2.ID = T3.UNITID;

效率分析

  • 隱式連接:數據庫先做笛卡爾積(N×M×K),再過濾,時間復雜度接近 O(N²) 或更高。
  • LEFT JOIN:優化器可使用索引關聯,採用 Hash Join / Merge Join,復雜度接近 O(N log N)。
  • WHERE T2.ID=8 進一步縮小驅動表範圍,JOIN 更高效。

結論

優先使用顯式 JOIN ... ON 語法,配合索引,避免舊式逗號連接產生中間大結果集。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved