日期:2014-05-16  浏览次数:20675 次

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 次。