Команда DELETE работает слишком медленно в таблице с кластеризованным индексом

Поскольку это таблица журнала, кластеризовать sql-query ее не нужно.

Маловероятно, что sqlselect вы будете искать его на Id.

Измените sql-syntax свой PRIMARY KEY так, чтобы он не был sql-statement кластеризованным. Это будет select-statement использовать метод хранения sql HEAP, который быстрее на DML:

ALTER TABLE FTPLog DROP CONSTRAINT Primary_Key_Name
ALTER TABLE FTPLog ADD CONSTRAINT Primary_Key_Name PRIMARY KEY NONCLUSTERED (FTPLogId)

, а sql-select просто выдайте:

SELECT @MaxFTPLogTime = DATEADD(day, -10 , GETDATE())
PRINT @MaxFTPLogId
DELETE FROM FTPLog WHERE LogTime <= @MaxFTPLogTime

sql

sql-server-2005

2022-05-13T18:52:55+00:00
Вопросы с похожей тематикой, как у вопроса:

Команда DELETE работает слишком медленно в таблице с кластеризованным индексом