【发布时间】:2022-01-27 14:58:43
【问题描述】:
DECLARE @DELETED_ROWS INT;
SET @DELETED_ROWS = 100
WHILE (@DELETED_ROWS > 0)
BEGIN
WITH cte AS
(
SELECT
DATEADD(DAY, -90, UPDATEDDATE) AS date, audit_id
FROM
auditdata
)
DELETE TOP (100)
FROM cte
WHERE audit_id <= (SELECT MIN(audit_id) + 100 FROM cte)
SET @DELETED_ROWS = @@ROWCOUNT
END
【问题讨论】:
-
这将通过上述查询被删除,但是从性能方面来说它需要花费太多时间来执行。有人可以帮我优化此查询或任何其他查询以获得更好的性能
-
请使用 while 循环帮助我。我们正在删除日期列上的数据,我们没有索引需要在 audit_ID 列上删除。
-
每次循环删除多少行
-
100-100批次
-
请edit你的cmets进入问题,因为目前没有问题。
标签: sql sql-server tsql