如何检查上次执行统计信息的时间?

Mic*_*l A 11 sql-server-2008 sql-server t-sql

最近,我们的索引出现了许多问题,我们的 DBA 团队将这些问题归因于最近没有运行的统计数据。这让我想知道 - 我如何检查最近是否通过 SQL Management Studio 更新了统计信息?

如果这个问题没有很好地解释这一点,我深表歉意 - 直到现在我才开始接触统计数据,在此之前,每当我遇到与性能相关的问题时都会查看索引。

编辑

我正在使用以下内容但收到语法错误:

use *databasename*
exec sp_autostats *schema.tablename*
Run Code Online (Sandbox Code Playgroud)

我收到的错误是:

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near '.'.
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

Ole*_*Dok 14

对于您的编辑- 您需要将表名括在单引号中:

EXEC sp_autostats 'tablename'
Run Code Online (Sandbox Code Playgroud)

原来的问题

首先 - 找到您要检查的统计信息:

选择统计

第二 - 查看它的属性,在那里你会看到最后更新的时间戳:

在此处输入图片说明

或者您可能想要执行以下查询:

SELECT t.name TableName, s.[name] StatName, STATS_DATE(t.object_id,s.[stats_id]) LastUpdated 
FROM sys.[stats] AS s
JOIN sys.[tables] AS t
    ON [s].[object_id] = [t].[object_id]
WHERE t.type = 'u'
Run Code Online (Sandbox Code Playgroud)


Gra*_*hey 9

获取统计信息的最佳方式是通过命令

DBCC SHOW_STATISTICS (<tablename>,<indexname>)
Run Code Online (Sandbox Code Playgroud)

这不仅会返回有关统计数据何时更新的信息,还会返回它们的大小、密度、它们的选择性以及显示数据分布的直方图。有了所有这些,您可以确定这些统计数据是否是最新的和有效的。