使用WHERE 子句的交叉聯接與內聯:效能比較
與內聯接間的所有可能的行組合沒有建立任何關係的表。這可能會導致大量的行,特別是對於大型表。
考慮以下具體範例:
SELECT User.* FROM User, Address WHERE User.addressId = Address.id;
此交叉聯接,相當於帶有 WHERE 子句的內部聯接,產生 User 和 Address 表中行的所有組合。
SELECT User.* FROM User INNER JOIN Address ON (User.addressId = Address.id);
相反,內部聯結根據聯結條件過濾結果,從而產生值匹配的較小行集。
與流行的看法相反,最佳化不會自動將交叉連結轉換為內聯接。雖然切換到內聯後效能可能不會明顯提高,但這並不是由於最佳化,而是由於特定的查詢特徵和 DBMS 行為。
交叉聯結通常比內聯接產生更多的行,消耗更多的記憶體和處理資源。因此,出於性能考慮,通常首選內連接。
在交叉連接和內連接之間進行選擇時要考慮的因素包括查詢複雜性、表格大小和所需的輸出。如果需要資料過濾,內連接提供了一種更有效、更準確的方法來檢索所需的結果。
以上是使用 WHERE 子句的交叉連結與內聯:哪個表現較好?的詳細內容。更多資訊請關注PHP中文網其他相關文章!