当前位置: 数据库>sqlserver
in与exists性能区别分析
来源: 互联网 发布时间:2014-08-29
本文导语: 在sql数据库中,在外表大内部小的情况下,exists性能比in快,如果两个表的大小相同的话,性能上几乎没有什么差别,not in 不能调用索引,not exists 可以调用索引 。 例子: 代码示例: set statistics io on select * from inventory wher...
在sql数据库中,在外表大内部小的情况下,exists性能比in快,如果两个表的大小相同的话,性能上几乎没有什么差别,not in 不能调用索引,not exists 可以调用索引 。
例子:
代码示例:
set statistics io on
select * from inventory where isfinish =1
and username in(select username from inventory)
(2756972 行受影响)
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 行受影响)
and exists(select username from inventory)
(2756972 行受影响)
表 'inventory'。扫描计数 2,逻辑读取 63455 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
以上介绍了sql数据库中,有关in与exists在性能上的一些区别,希望对大家有所帮助。