导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

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好像也没这么慢啊?有没有比较有效的增加速度的方法呢?
...全文
45 点赞 收藏 4
写回复
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
建索引就快了
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告