SQL效率的小问题

longzu1984 2008-01-23 03:47:39
在学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好像也没这么慢啊?有没有比较有效的增加速度的方法呢?
...全文
65 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangjiexi 2008-01-23
  • 打赏
  • 举报
回复
通常在SELECT中使用*不是一个好习惯,但你可以在EXISTS谓词中放心使用。
优化器知道EXISTS谓词不需要引用行的特定属性。它只关心行是否存在。
因此,它会完全忽略SELECT列表。
longzu1984 2008-01-23
  • 打赏
  • 举报
回复
谢谢了,一下都明白了,呵呵

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

jinjazz 2008-01-23
  • 打赏
  • 举报
回复
〉〉select 'test' where exists(select a1 from tba where id=3)

如果第一条记录时id=3的,sql立马就终止扫描了,而后面一句不但要扫完,还要网络传输。
kk19840210 2008-01-23
  • 打赏
  • 举报
回复
建索引就快了

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧