在学SQL SERVER 2000,有几个效率上的问题,首先说一下数据库,我随便建立了一个,填充了20W一样的数据,除了ID不一样,每个字段都是varchar(500)1.关键字EXISTS效率怎么那么高的?select 'test' where  exists(select a1 from tba where id=3)这句,瞬间就出来了,而select a1 from tba where id=3就需要14秒,这是怎么回事?EXISTS后面的语句不是一样的吗?2.就是这句select a1 from tba where id=3了,我的电脑是DELL的E521,不算好也不算烂,执行这句语句要8-14秒左右,用存储过程也差不多,感觉有点太慢了,怎么回事?我用access好像也没这么慢啊?有没有比较有效的增加速度的方法呢?

解决方案 »

  1.   

    〉〉select 'test' where  exists(select a1 from tba where id=3)如果第一条记录时id=3的,sql立马就终止扫描了,而后面一句不但要扫完,还要网络传输。
      

  2.   

    谢谢了,一下都明白了,呵呵这句"select   a1   from   tba   where   id=3",没建立索引前是8-14秒,建立后居然一下到0了...
      

  3.   

    通常在SELECT中使用*不是一个好习惯,但你可以在EXISTS谓词中放心使用。
    优化器知道EXISTS谓词不需要引用行的特定属性。它只关心行是否存在。
    因此,它会完全忽略SELECT列表。