0

SQL Server 2012 Enterprise を展開しましたが、パフォーマンスの問題があります。

  • 同じデータ (SQL Server 2005 Enterprise からバックアップし、2012 年に復元)
  • 3200 の SQL SELECT ステートメントのテスト スクリプト

Management Studio を使用してテストを行います。

  1. プレーンテキストとしての結果
  2. ファイルの結果

同じコンピューター上:

  1. 2005年:15秒、2012年:2分
  2. 2005年:14秒、2012年:30秒

より強力なコンピューターを使用しても、2012 年は 2005 年よりもまだ遅い.

何が間違っている可能性がありますか?SQL Server 2012 と既定のパラメーターをインストールした方法は? バックアップを復元した方法は? 私たちは何ができる?

4

1 に答える 1

1

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

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
于 2012-12-07T21:37:50.563 に答える