性能比較:使用WHERE 子句的交叉聯接與內聯
使用交叉聯接後跟WHERE 子句的功效通常是爭論反對內部聯接的性能。雖然這兩種方法產生相似的結果,但在某些情況下,一種方法可能比另一種方法表現更好。
使用 WHERE 子句的交叉連結
交叉連結組合來自兩個或多個資料表,無論它們之間有任何關係。與 WHERE 子句結合使用時,交叉連結可以根據指定謂詞有效過濾出所需的行。
內聯
內聯結匹配兩個表中的行基於 ON 或 USING 子句定義的相等比較。結果行僅包含符合行的列。
效能注意事項
通常,內連接比使用 WHERE 子句的交叉連接更有效率。
在交叉連接中,DBMS 必須先產生兩個表的整個笛卡爾積,這在計算上可能會很昂貴,尤其是對於大型資料庫表。然後套用 WHERE 子句消除不需要的行,需要額外的處理。
另一方面,內聯僅組合滿足聯接條件的行,因此無需初始笛卡爾積。這會縮短執行時間。
範例
考慮提供的範例查詢:
SELECT User.* FROM User, Address WHERE User.addressId = Address.id; SELECT User.* FROM User INNER JOIN Address ON (User.addressId = Address.id);
使用內部連結的第二個查詢通常會比較使用交叉連結和WHERE子句的第一個查詢執行得更快。 DBMS 可以根據相等比較直接從 User 表中選擇所需的行,而無需先生成大的笛卡爾積。
結論
而與 WHERE 交叉連接子句可以實現與內連接相似的結果,內連接通常提供更好的性能。但是,需要注意的是,特定的供應商效能指南可能會影響不同情況下的最佳加入選擇。
以上是WHERE 交叉連接與內連接:哪種 SQL 連接提供更好的效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!