為什麼要在 SQL 中避免逗號連線?
新的 SQL 開發人員經常使用逗號連接,這是一種不太明確的表連接方式:
<code class="language-sql">SELECT a.someRow, b.someRow FROM tableA AS a, tableB AS b WHERE a.ID=b.ID AND b.ID= $someVar</code>
雖然有效(相當於 INNER JOIN
),但此方法具有潛在的性能缺陷。
逗號連接的低效率
考慮這個例子:
<code class="language-sql">SELECT * FROM people p, companies c WHERE p.companyID = c.id AND p.firstName = 'Daniel'</code>
資料庫最初可能會建立完整的笛卡爾積(people
和 companies
行的每種組合),然後根據 WHERE
子句進行過濾。 這比其他方法的效率要低得多。
基於關鍵字的連接的優越性
使用明確的 JOIN
關鍵字和 ON
子句提供了一種更有效率、更易讀的方法:
<code class="language-sql">SELECT * FROM people p JOIN companies c ON p.companyID = c.id WHERE p.firstName = 'Daniel'</code>
這清楚地表明了與資料庫的連接條件,優化了連接過程並避免了不必要的大型中間笛卡爾積的創建。 這可以加快查詢執行速度並減少資源消耗,尤其是對於大型資料集。
最佳實務:一律使用 JOIN 關鍵字
為了獲得更好的效能、可讀性和可維護性,請務必優先使用 JOIN
關鍵字(INNER JOIN
、LEFT JOIN
、RIGHT JOIN
等)而不是逗號連接。雖然現有的逗號連接可能不需要立即重寫,但採用這種最佳實踐可以持續改進您的 SQL 程式碼。
以上是為什麼 SQL 中 JOIN 關鍵字優於逗號連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!