Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sql Server 2012 chậm hơn 2005?

Suy nghĩ đầu tiên của tôi khi nhìn thấy các biến thể như vậy là đảm bảo rằng bạn đã tạo lại số liệu thống kê cho tất cả các bảng của mình. Có rất nhiều tập lệnh trên web để thực hiện việc này và rất nhiều cuộc thảo luận về việc có nên sử dụng chương trình cài sẵn, có nên quét toàn bộ hay không, v.v. Đây là một tập lệnh nhanh và dễ hiểu mà tôi sẽ chạy trước khi thực hiện so sánh.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chọn một hàng cho mỗi ID

  2. ĐẶT HÀNG THEO NGÀY hiển thị NULLS đầu tiên rồi đến ngày gần đây nhất

  3. STContains trên cột Địa lý

  4. Tạo kế hoạch bảo trì trong SQL Server

  5. Sự khác biệt giữa chỉ mục được phân nhóm và không phân nhóm