Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server Update-Datenbankstatistik

Hallo,

Datenbankobjektstatistiken sollten auf dem neuesten Stand sein, um die richtige Entscheidung des SQL Server-Optimierers zu treffen.

Wenn die Statistiken der Datenbankobjekte nicht auf dem neuesten Stand sind, trifft der SQL Server-Datenbankoptimierer eine falsche Entscheidung für den Ausführungsplan der Transaktion.

Sie können alle Datenbankstatistiken mit dem folgenden Skript in einer SQL Server-Instanz aktualisieren.

Sie sollten die folgende Abfrage in einer freien Zeit der Datenbank ausführen, zum Beispiel abends oder am Wochenende.

DECLARE @SQL VARCHAR(1000)  
DECLARE @DB sysname  

DECLARE curDB CURSOR FORWARD_ONLY STATIC FOR  
   SELECT [name]  
   FROM master..sysdatabases 
   WHERE [name] NOT IN ('model', 'tempdb') 
   ORDER BY [name] 
     
OPEN curDB  
FETCH NEXT FROM curDB INTO @DB  
WHILE @@FETCH_STATUS = 0  
   BEGIN  
       SELECT @SQL = 'USE [' + @DB +']' + CHAR(13) + 'EXEC sp_updatestats' + CHAR(13)  
       PRINT @SQL  
       FETCH NEXT FROM curDB INTO @DB  
   END  
    
CLOSE curDB  
DEALLOCATE curDB