JOIN 與LEFT JOIN:WHERE 子句使用的效能影響
在資料庫查詢中,JOIN 子句用於組合多個行基於公共列的表。 LEFT JOIN 變體保留左表中的所有行,即使右表中沒有匹配的行也是如此。有人提出了有關 JOIN 和 LEFT JOIN 與 WHERE 子句結合使用時的相對性能的問題。
JOIN 與 WHERE 子句效能
與常見假設相反於 PostgreSQL 中的 INNER JOIN,WHERE 條件和 JOIN 條件通常是等效的。顯式 JOIN 條件被認為是可讀性和可維護性的良好實踐。
但是,LEFT JOIN 和 WHERE 條件的組合變得至關重要。 LEFT JOIN 保留左表中的所有行,即使右表中沒有符合項目也是如此。如果 WHERE 條件隨後從右表中過濾掉空值,則 LEFT JOIN 的行為類似於 INNER JOIN,但查詢計劃可能不太理想。
對查詢最佳化的影響
在涉及多個連接表的複雜查詢中,確定最佳連接序列的計算成本很高。 「通用查詢最佳化器」旨在找到最佳查詢方案。誤導性地使用 LEFT JOIN 可能會使優化器的任務複雜化並導致效能問題。
相關問題
其他資源和範例則示範了不正確的WHERE 可能引起的潛在問題LEFT JOIN 的子句用法:
以上是WHERE 子句如何影響 PostgreSQL 中 JOIN 和 LEFT JOIN 的效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!