I prefer to use UPDATE STATISTICS command as I can drive the sampling rate for each table. I typically sample at 25%. Here's what I use:CREATE PROC isp_UPDATE_STATISTICS(@dbName sysname, @sample int)ASSET NOCOUNT ONDECLARE @SQL nvarchar(4000)DECLARE @ID intDECLARE @TableName sysnameDECLARE @RowCnt intCREATE TABLE ##Tables( TableID INT IDENTITY(1, 1) NOT NULL, TableName SYSNAME NOT NULL)SET @SQL = ''SET @SQL = @SQL + 'INSERT INTO ##Tables (TableName) 'SET @SQL = @SQL + 'SELECT [name] 'SET @SQL = @SQL + 'FROM ' + @dbName + '.dbo.sysobjects ' SET @SQL = @SQL + 'WHERE xtype = ''U'' AND [name] <> ''dtproperties'''EXEC sp_executesql @statement = @SQLSELECT TOP 1 @ID = TableID, @TableName = TableNameFROM ##TablesORDER BY TableIDSET @RowCnt = @@ROWCOUNTWHILE @RowCnt <> 0BEGIN SET @SQL = 'UPDATE STATISTICS ' + @dbname + '.dbo.[' + @TableName + '] WITH SAMPLE ' + CONVERT(varchar(3), @sample) + ' PERCENT' EXEC sp_executesql @statement = @SQL SELECT TOP 1 @ID = TableID, @TableName = TableName FROM ##Tables WHERE TableID > @ID ORDER BY TableID SET @RowCnt = @@ROWCOUNTENDDROP TABLE ##TablesGO
Tara Kizer