in与exists性能区别分析

发布时间:2019-10-10编辑:脚本学堂
本文介绍了sql数据库中in与exists在性能上的区别,在外表大内部小的情况下,exists性能比in快,如果两个表的大小相同的话,性能上几乎没有什么差别,具体参考本文的详细内容吧。

在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 行受影响) 
 

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

以上介绍了sql数据库中,有关in与exists在性能上的一些区别,希望对大家有所帮助。