一尘不染

SQL Server 2012比2005慢吗?

sql

我们已经部署了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的方式和默认参数?我们还原备份的方式?我们可以做什么?


阅读 136

收藏
2021-05-16

共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
2021-05-16