访问最新记录时SQL性能变慢

时间:2011-05-24 10:47:15

标签: sql sql-server sql-server-2005

我有一个MSSQL2005数据库,其记录可以追溯到2004年,目前在一个特定的表中只有不到1,000,000条记录。

事情是,如果我的报告将2009年数据与2010年数据,2008年与2009年,2009年与2009年或今年之前的任何组合进行比较,那么结果将在1-5秒内返回。

但是,如果我运行包含2011年数据的报告,则报告需要大约6分钟。

我检查了数据,它看起来与前几年类似,并且与所有报告中使用的相同数据进行交叉引用。

好像数据库已超出某个限制;今年的数据已经变得支离破碎,因此难以获取。我不是说这种情况,但可能是我所知道的。

有人有任何建议吗?

肖恩。

更新:
自发布问题后我发现了 DBCC DBREINDEX table_name ,这似乎已经完成了。

1 个答案:

答案 0 :(得分:5)

执行计划是什么样的?如果不同,您可能需要手动更新表中的统计信息,因为新插入的行可能在统计信息中不成比例地表示,因此可能会选择次优计划。

有关此问题的解释,请参阅此博客文章Statistics, row estimations and the ascending date column

另外,检查您的2011查询是否因为并发插入或更新而未遇到阻止,这些插入或更新不会影响对历史数据的查询。