SQL 中的逗號連結與明確 JOIN 關鍵字的效率對比
早期的 SQL 查詢,在開發者還不熟悉 JOIN 關鍵字時,經常使用以下格式:
<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>
許多資料庫會先計算兩個表格所有行的笛卡爾積,然後再進行篩選。對於大型資料集,這將非常低效。
最佳實務
為了避免這些效能問題,建議明確使用 JOIN 關鍵字。以下重寫的查詢更有效地組織了限制條件:
<code class="language-sql">SELECT * FROM people p JOIN companies c ON p.companyID = c.id WHERE p.firstName = 'Daniel'</code>
這種方法直接指導資料庫執行連接操作,而不是計算完整的笛卡爾積,從而提高速度並減少記憶體佔用。
總結
雖然使用「逗號連接」語法的舊查詢可以正常工作,但建議將其更新為使用 JOIN 關鍵字。這樣做不僅提高了可讀性,而且解決了潛在的效能問題。
以上是SQL 中的逗號式連線是否比顯式 JOIN 關鍵字效率低?的詳細內容。更多資訊請關注PHP中文網其他相關文章!