- Kód: Vybrat vše
DECLARE @e NVARCHAR(4000),@id INT
DECLARE c CURSOR LOCAL FAST_FORWARD FOR SELECT id FROM dbo.sysindexes WHERE indid<2 AND OBJECTPROPERTY(id,'TableIsFake')=0 AND OBJECTPROPERTY(id,'IsSystemTable')=0 ORDER BY rows DESC
OPEN c
WHILE 1=1 BEGIN
FETCH NEXT FROM c INTO @id
IF @@fetch_status<>0 BREAK
SET @e='UPDATE STATISTICS '+QUOTENAME(USER_NAME(OBJECTPROPERTY(@id,'OwnerId')))+'.'+QUOTENAME(OBJECT_NAME(@id))+' WITH FULLSCAN'
EXEC(@e)
END
DEALLOCATE c
Statistiky používá MS SQL Server ve svém vnitřním mechanismu (Query Optimizer) k vyhodnocení nejefektivnější cesty pro získání nebo aktualizaci dat.
Tato akce tedy může být jednou z cest, jak zlepšít odezvu SQL Serveru, potažmo jeho rychlost v případě aktuálních výkonnostních problémů (např. způsobeném hromadným importem / výmazem dat).
Má-li databáze nastavenu vlastnost Auto Create Statistics a Auto Update Statistcs není důvod ji spouštět pravidelně.
Je-li součástí údržbových operací pravidelná re-indexace (REBUILD) indexů - je aktualizace statistik indexů jeho součástí, tzn. není důvod ji duplicitně znovu spoustět.
Výborné informace ke statistikám formou otázka - odpověď lze nalézt zde.