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

SQL Server 2005 Xóa truy vấn CHẬM

Chỉ mục của bạn không thực sự hỗ trợ truy vấn vì truy vấn không tham chiếu đến cột quan trọng hàng đầu. Vì vậy, nó phải quét toàn bộ bảng có hoặc không có chỉ mục này. Bạn có thể xem xét một chỉ mục trên DataPointDate để hỗ trợ thao tác xóa này nếu đó là thứ bạn thường xuyên chạy.

Nếu DataPointID là cột IDENTITY và DataPointDate được nhập tuần tự, bạn cũng có thể xem xét biến thể này:

DECLARE @maxID INT;

SELECT @maxID = MAX(DataPointID) 
  FROM dbo.tblTSS_DataCollection
  WHERE [DatapointDate] < DATEADD(D, -7, GETDATE());

DELETE dbo.tblTSS_DataCollection
  WHERE DataPointID <= @maxID;

Một điều khác mà bạn có thể cân nhắc thực hiện (nếu việc xóa chứ không phải quá trình quét góp phần gây ra sự chậm chạp) là (a) đảm bảo nhật ký của bạn có đủ chỗ để xóa và không giết bạn bằng một loạt các trình duyệt tự động và ( b) thực hiện công việc theo lô:

BEGIN TRANSACTION;

SELECT 1;

WHILE @@ROWCOUNT > 0
BEGIN
  COMMIT TRANSACTION;

  DELETE TOP (1000) dbo.tblTSS_DataCollection WHERE ...
END

COMMIT TRANSACTION;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hiệu suất GUID

  2. Cách tốt nhất cho khóa chính trong bảng là gì?

  3. Cách chuyển đổi giá trị được phân tách bằng dấu phẩy thành các hàng trong máy chủ sql

  4. Tạo tập lệnh cho các bản ghi cụ thể trong SQL Server

  5. Lệnh có điều kiện của SQL Server theo