こんにちは、
SQL Serverオプティマイザを正しく決定するには、データベースオブジェクトの統計が最新である必要があります。
データベースオブジェクトの統計が最新でない場合、SQLServerデータベースオプティマイザーはトランザクションの実行プランについて誤った決定を下します。
SQLServerインスタンスで次のスクリプトを使用してすべてのデータベース統計を更新できます。
夕方や週末など、データベースの空き時間に次のクエリを実行する必要があります。
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