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    责编:豆豆技术应用

正在加载评论...