`

IN和EXISTS性能上的区别

阅读更多
在外表大内部小的情况下,EXISTS性能比IN快,如果两个表的大小相同的话,性能上几乎没有什么差别,NOT IN 不能调用索引,NOT EXISTS 可以调用索引
SET STATISTICS IO ON
SELECT * FROM Inventory WHERE IsFinish =1  
AND  UserName IN(SELECT UserName FROM Inventory)
(2756972 行受影响)
表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'Inventory'。扫描计数 2,逻辑读取 126904 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
SELECT * FROM Inventory WHERE IsFinish=1 
AND EXISTS(SELECT UserName FROM Inventory)
(2756972 行受影响)
表 'Inventory'。扫描计数 2,逻辑读取 63455 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics