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

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秒。觉得很奇怪的现象,请教各位这是什么原因造成的?怎么解决?
...全文
131 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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加个非聚集索引。再试试!

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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