開心每一天1111
2019-07-23 19:28:09
SQL JOIN vs IN性能?我有一個案例,使用JOIN或IN將給我正確的結果......通常有更好的性能,為什么?它取決于您運行的數(shù)據庫服務器多少錢?(僅供參考我使用的是MSSQL)
3 回答

斯蒂芬大帝
TA貢獻1827條經驗 獲得超8個贊
一般來說,IN
和JOIN
不同的查詢,可以產生不同的結果。
SELECT a.*FROM aJOIN bON a.col = b.col
是不一樣的
SELECT a.*FROM aWHERE col IN ( SELECT col FROM b )
,除非b.col
是獨一無二的。
但是,這是第一個查詢的同義詞:
SELECT a.*FROM aJOIN ( SELECT DISTINCT col FROM b )ON b.col = a.col
如果加入列是UNIQUE
并標記為這樣,則這兩個查詢都會生成相同的計劃SQL Server
。
如果不是,那么IN
比JOIN
開快DISTINCT
。
有關性能詳情,請參閱我的博客中的這篇文章

慕的地8271018
TA貢獻1796條經驗 獲得超4個贊

動漫人物
TA貢獻1815條經驗 獲得超10個贊
關于邏輯差異的一個有趣的寫法:SQL Server:JOIN vs IN vs EXISTS - 邏輯差異
我很確定假設關系和索引被維護,Join將整體表現(xiàn)更好(更多的努力用于處理該操作然后其他操作)。如果從概念上考慮它,那么它是2個查詢和1個查詢之間的區(qū)別。
您需要將其連接到查詢分析器并嘗試它并查看差異。另請查看查詢執(zhí)行計劃并嘗試最小化步驟。
添加回答
舉報
0/150
提交
取消