V poslední době máme s našimi indexy řadu problémů, které náš tým DBA připsal statistikám, které nebyly spuštěny nedávno. To mě přimělo přemýšlet - jak mohu zkontrolovat, zda statistiky byly nedávno aktualizovány prostřednictvím SQL Management Studio?
Omlouvám se, pokud tato otázka to nevysvětluje velmi dobře - do statistik jsem byl zaveden až dosud a před tím by se indexy dívaly, kdykoli jsem měl problémy s výkonem.
pravit:
Používám následující, ale dostávám chybu syntaxe:
use *databasename*
exec sp_autostats *schema.tablename*
Chyba, kterou dostávám, je:
Msg 102, Level 15, State 1, Line 2
Incorrect syntax near '.'.
Proč je to?
Pro vaši úprav - Název tabulky musíte uzavřít do jednoduchých uvozovek:
EXEC sp_autostats 'tablename'
a pro původní otázku
Nejprve - najděte statistiky, které chcete zkontrolovat:
Za druhé - podívejte se na jeho vlastnosti a zde uvidíte poslední aktualizované časové razítko:
Nebo možná budete chtít provést následující dotaz:
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'
Nejlepší způsob, jak získat informace o statistikách, je příkaz
DBCC SHOW_STATISTICS (<tablename>,<indexname>)
To vrátí informace nejen o tom, kdy jsou statistiky aktualizovány, ale o jejich velikosti, hustotě, selektivitě a histogramu, který ukazuje distribuci dat. Díky tomu můžete určit, zda jsou tyto statistiky aktuální a efektivní.