sql >> データベース >  >> RDS >> Sqlserver

Sql Server 2012 は 2005 より遅いですか?

    このようなバリエーションを目にしたときに最初に考えたのは、すべてのテーブルの統計が再生成されていることを確認することです。これを行うためのスクリプトがウェブ上に多数あり、組み込みの sproc を使用するかどうか、フルスキャンを実行するかどうかなどについて多くの議論が行われています。比較を行う前に実行する手っ取り早い汚いスクリプトを 1 つ示します。

    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
    



    1. GPLとlibmysqlclient

    2. SQL max()は、列に複数の最大値がある場合にのみ1行を返します

    3. JAVAMySQL接続ClassNotFound例外

    4. Microsoft Accessデータベースを分割するとはどういう意味ですか?