首页 新闻 会员 周边 捐助

SQL sERVER查询效率的问题

0
[已解决问题] 解决于 2013-08-13 15:57

如果是10000条数据的话

1.    select * from table where state=0

2.    select * from table where state=0 and (SendTime between '2000-1-1 00:00:00' and getdate())

因为到现在的所有数据都是从2002-1-1 00:00:00 开始的

第二句会比第一句查询效率低吗?

.F.的主页 .F. | 初学一级 | 园豆:13
提问于:2013-08-13 14:08
< >
分享
最佳答案
0

快慢取决于索引

奖励园豆:5
dudu | 高人七级 |园豆:30778 | 2013-08-13 15:01

不太明白诶  就比如说是orderby 之类的?

.F. | 园豆:13 (初学一级) | 2013-08-13 15:06

@.F.: 你建一个包含state与SendTime的索引试试

dudu | 园豆:30778 (高人七级) | 2013-08-13 15:07

@dudu: 嗯 我明白了...不过  我一般都是建立的id的索引就是咯,也就是说,按照索引来搜索的时候 ,会更快

.F. | 园豆:13 (初学一级) | 2013-08-13 15:18
其他回答(1)
0

理论上是第1条语句快一些。

因为只要看state=0就行了。

后一条要看二个条件。且SendTime between '2000-1-1 00:00:00' and getdate()会使查询变慢。

不过你可以执行这二条语句看看在实际的环境中效率是什么样的。

只有执行了才知道真实的结果。

Albert Fei | 园豆:2102 (老鸟四级) | 2013-08-13 14:47

我执行了的时候  有时候第一条快  有时候第二条快 ...都晕了

支持(0) 反对(0) .F. | 园豆:13 (初学一级) | 2013-08-13 14:48

@.F.: 那就是差不多的。数据量小的时候,可以忽略。数据大的时候就会有明显的区别了。

要把索引考滤在内的话, 就要看你的表索引怎么建的了。

你这样问的话,没有说明索引条件,一般就把state=0 and SendTime 当作有同样的索引了。

支持(0) 反对(0) Albert Fei | 园豆:2102 (老鸟四级) | 2013-08-15 22:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册