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

SQL Server 2012 langsamer als 2005?

Mein erster Gedanke, wenn ich solche Variationen sehe, ist sicherzustellen, dass Sie Statistiken für alle Ihre Tabellen neu generiert haben. Es gibt viele Skripte im Internet, um dies zu tun, und viele Diskussionen darüber, ob die eingebauten Sprocs verwendet werden sollen, ob ein Fullscan durchgeführt werden soll usw. Hier ist ein schnelles und schmutziges Skript, das ich vor dem Vergleichen ausführen würde.

CREATE  PROCEDURE sp_UtilityUpdateStats AS
SET NOCOUNT ON

DECLARE @iCounter       INT
DECLARE @iCounterMax    INT

DECLARE @TableList TABLE
(
    iTable INT IDENTITY(1,1) PRIMARY KEY,
    szTableName VARCHAR(128)
)

INSERT @TableList (szTableName)
SELECT [name] FROM sysobjects
WHERE [type] = 'u'
ORDER BY [name] DESC


SET @iCounterMax = (SELECT MAX(iTable) FROM @TableList)
SET @iCounter = 0
DECLARE @szTableName VARCHAR(128)

RAISERROR(N'------STARTING sp_UtilityUpdateStats------', 10, 1) WITH LOG
WHILE @iCounter < @iCounterMax
BEGIN
    SET @iCounter = @iCounter + 1

    SELECT  @szTableName = szTableName
    FROM @TableList
    WHERE iTable = @iCounter

    RAISERROR(N'UPDATE STATISTICS YourDB.dbo.%s', 10, 1, @szTableName) WITH LOG
    EXEC ('UPDATE STATISTICS YourDB.dbo.' + @szTableName)

END
RAISERROR(N'------FINISHING sp_UtilityUpdateStats------', 10, 1) WITH LOG

SET NOCOUNT OFF
GO