in和exists的区别与执行效率问题解析
http://tech.ddvip.com 2008年01月18日 社区交流
内容摘要:本文对in和exists的区别与执行效率的问题进行了全面整理分析……
select * from A left join B on id = A.id
所以使用何种方式,要根据要求来定。
这是一般情况下做的测试:
这是偶的测试结果:
setstatisticsioon
select*fromsysobjectswhereexists(select1fromsyscolumnswhereid=syscolumns.id)
select*fromsysobjectswhereidin(selectidfromsyscolumns)
setstatisticsiooff
(47 行受影响)
表 'syscolpars '。扫描计数 1,逻辑读取 3 次,物理读取 0 次,预读 2 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'sysschobjs '。扫描计数 1,逻辑读取 3 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
(1 行受影响)
(44 行受影响)
表 'syscolpars '。扫描计数 47,逻辑读取 97 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'sysschobjs '。扫描计数 1,逻辑读取 3 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
(1 行受影响)
setstatisticsioon
select*fromsyscolumnswhereexists(select1fromsysobjectswhereid=syscolumns.id)
select*fromsyscolumnswhereidin(selectidfromsysobjects)
setstatisticsiooff
(419 行受影响)
表 'syscolpars '。扫描计数 1,逻辑读取 10 次,物理读取 0 次,预读 15 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
来源:IT专家网 作者:Peak Wong 责编:豆豆技术应用