查询特定时间后的数据非常慢,请教什么原因

chongzhouyiye 2015-11-09 02:50:37
select no from SCM_CONTRACTHEAD Z,SCM_CONTRACT2 S
where Z.BILLID=S.BILLID
and DECLAREDATE between '2015-09-13'and '2015-09-14'
group by no

就这个简单语句,只要条件是从2015-09-13开始就会很慢,几百条数据也要将近30秒,但是改为时间从2015-09-12及以前就很快,只要1秒。觉得很奇怪的现象,请教各位这是什么原因造成的?怎么解决?
...全文
99 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Tiger_Zhao 2015-11-10
重建索引试试。
回复
chongzhouyiye 2015-11-09
引用 3 楼 Leftie 的回复:
这样试试: select * from table where convert(varchar(10),日期字段,120)>='2015-09-13' and convert(varchar(10,日期字段,120)<='2015-09-14'
这个方法也有效,但是原因是什么呢?麻烦讲解下
回复
chongzhouyiye 2015-11-09
引用 2 楼 a504268 的回复:
是不是这段时间脏数据比较多?
数据基本正常
回复
chongzhouyiye 2015-11-09
引用 1 楼 u010192842 的回复:
看一下执行计划。 或者您把between and 改成'>=' and '<=',然后再给DECLAREDATE加个非聚集索引。再试试!
加索引就好了,但是为什么跟这个特定的时间点有关系呢?
回复
饮水需思源 2015-11-09
这样试试: select * from table where convert(varchar(10),日期字段,120)>='2015-09-13' and convert(varchar(10,日期字段,120)<='2015-09-14'
回复
洞穿秋水 2015-11-09
是不是这段时间脏数据比较多?
回复
Yole 2015-11-09
看一下执行计划。 或者您把between and 改成'>=' and '<=',然后再给DECLAREDATE加个非聚集索引。再试试!
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-11-09 02:50
社区公告
暂无公告