Performance 为什么没有重新计算统计数据?
我有SQL Server Compact Edition 4.0数据库,每天可获得约1K条记录。但随着时间的推移,一些查询失去了效率。我重新检查了索引和统计数据,发现统计数据很长时间没有更新<代码>sp_show_statistics向我显示以下内容:Performance 为什么没有重新计算统计数据?,performance,sql-server-ce,sql-tuning,Performance,Sql Server Ce,Sql Tuning,我有SQL Server Compact Edition 4.0数据库,每天可获得约1K条记录。但随着时间的推移,一些查询失去了效率。我重新检查了索引和统计数据,发现统计数据很长时间没有更新sp_show_statistics向我显示以下内容: TABLE INDEX UPDATED ROWS ROWS__SAMPLED STEPS DENSITY AV_KEY_LEN RECOMPUTE STA
TABLE INDEX UPDATED ROWS ROWS__SAMPLED STEPS DENSITY AV_KEY_LEN RECOMPUTE STALE
Events PK_Events 18.08.2015 7:45:08 1876754 1876754 5 5,328349E-07 4 True False
Files PK_Files 09.08.2015 18:15:00 411589 411589 3 2,429608E-06 4 True False
Revisions PK_Revisions 07.07.2015 8:10:05 376296 376296 5 2,657482E-06 4 True False
Revisions UQ_Revisions_Guid 07.07.2015 8:10:50 376296 376296 200 2,657482E-06 16 True False
...
从MSDN(sp_显示统计数据):
重新计算。
布尔值。True表示如果确定此统计信息已过时,则下次使用时将自动更新此统计信息
所有索引都是在没有统计信息\u NORECOMPUTE选项的情况下创建的。数据库每天都被大量使用。还有一个细节:修订表现在有442067条记录,但这个表的统计数据是建立在376296行上的,正如我在sp_show_statistics输出中看到的那样
如何使统计数据保持最新?谢谢 您可以使用“更新统计信息”
谢谢,但我想知道如何自动更新统计信息。如果统计信息过时,查询处理器会自动更新这些统计信息。我认为(还没有找到任何证据,但可以测试)SqlCeEngine.Compact将强制收回统计数据。有关“过时”含义的更多信息,请参见: