[英]Can an INNER JOIN offer better performance than EXISTS
我一直在研究對一系列過程進行性能改進,最近一位同事提到他在使用 INNER JOIN 代替 EXISTS 時取得了顯着的性能改進。
作為調查為什么會這樣的一部分,我想我會在這里問這個問題。
所以:
事實上,人們可以為這個問題帶來任何其他經驗。
如果有任何答案可以專門解決這個問題,而沒有任何其他可能的性能改進建議,我將不勝感激。 我們已經取得了相當程度的成功,我只是對這一項感興趣。
任何幫助將非常感激。
一般來說, INNER JOIN
和EXISTS
是不同的東西。
前者返回兩個表中的重復項和列,后者返回一個記錄,並且作為謂詞,僅從一個表返回記錄。
如果在UNIQUE
列上執行內部UNIQUE
,則它們表現出相同的性能。
如果在應用了DISTINCT
的記錄集上進行內連接(以去除重復項),則EXISTS
通常更快。
IN
和EXISTS
子句(具有等值相關性)通常采用幾種SEMI JOIN
算法中的一種,這些算法通常比其中一個表上的DISTINCT
更有效。
在我的博客中看到這篇文章:
也許,也許不是。
在帶有IN
、 EXIST
、 JOIN
語句的sql server 2019
查詢中,有不同的計划(如果添加了正確的索引)。 所以性能也不同。 文章https://www.mssqltips.com/sqlservertip/6659/sql-exists-vs-in-vs-join-performance-comparison/ 中顯示JOIN
更快一些。
PS 我知道這個問題是關於 sql server 2005(在標簽中),但人們大多通過文章標題尋找答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.