Mettre à jour la statistique

Dans la majorité de cas, SQL Server mets à jour la statistique de la manière automatique et régulière. Par contre, si vous venez de migrer vos bases de données depuis le vieux serveur sous 2000 ou 2005 sur 2008/2008 R2, la statistique n'est pas à jour et vos requêtes commencent tourner le temps long.

Dans ce cas il vous fait initier la mise à jour de la statistique pour toutes les bases de données applicatives. Voici le script qui vous aide.

/* This script impose on statistic updates for all application databases */
USE master
GO
DECLARE @db sysname, @sql nvarchar(max)
DECLARE cur_db INSENSITIVE CURSOR FOR
  SELECT name FROM sys.databases WHERE owner_sid > 0x01
OPEN cur_db
WHILE 1 = 1 BEGIN
  FETCH NEXT FROM cur_db INTO @db
  IF @@FETCH_STATUS <> 0
    BREAK
  SET @sql = 'USE ' + @db + ';' +
    'EXEC sp_MSforeachtable ''UPDATE STATISTICS ?; EXEC sp_recompile ''''?'''''''
  PRINT @sql
  EXEC sp_executesql @sql
END
DEALLOCATE cur_db