单表查询效率问题

ChallengeThemselves 2010-08-27 12:17:19
我有一张表,每日都会插入一定的数据,大概2个星期有200-300w条的样子

由于会对时间段内的数据进行查询,所以对日期建立了聚集索引,其他查询字段建立了非聚集索引
,短时间内的数据查询是很快的,比如2010-08-12到2010-08-14内的记录比较快。但时间跨度大的记录,

比如2010-08-5到2010-08-25号的数据,一旦满足条件的数据在8月5号附近时,比如8月10号以后就没有该记录的数据时,查询效率相当低,导致系统无法正常使用了,查询语句的大概是
select top 30 XXX from table where tm>=stime and tm<=etime and keywords ='xxx' order by id desc

如果去掉order by id desc 速度也是非常快的,大概是前30条数据是在表中的物理顺序比较靠前的原因

通过建立tm,id的复合索引也是不行的

另外由于表的字段比较多有30个左右,数据也比较多,270w数据大概有1.7G的样子,并且采用了分区表,
取消了分区表进行单表操作也是上面的情况

不知道如何解决了,特来求教下大家啊
...全文
95 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
黄_瓜 2010-08-27
  • 打赏
  • 举报
回复
不妨升级硬件试试
  • 打赏
  • 举报
回复
.................................
  • 打赏
  • 举报
回复
硬件没问题,关键是才几百万数据就这么慢,明明是数据库的问题
wushidu 2010-08-27
  • 打赏
  • 举报
回复
友情帮顶


全国地名数据库

22,294

社区成员

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

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