Я пытаюсь удалить таблицу, в которой всего около 39 тыс. Записей, но по некоторым причинам требуется время (около 1,5 минут) даже для удаления одной записи. Как я могу улучшить производительность моей операции удаления. Как я могу гарантировать, что активность журнала не займет много времени. Можно ли поместить оператор «DELETE» в цикл while, а затем открыть транзакцию и фиксировать ее каждый раз, когда она успешно завершается. Любой другой эффективный метод доступен?
[PrimaryKey] здесь имеет «кластерный индекс»
DECLARE @BatchCount INT;
SELECT @BatchCount = COUNT(1) FROM #DHDID
DECLARE @Counter INT = 1
WHILE( @Counter <= @BatchCount)
BEGIN
BEGIN TRANSACTION
DECLARE @ID INT;
SELECT @ID = DHDID FROM #DHDID WHERE ID = @Counter
DELETE FROM <MYTABLE> WHERE [PrimaryKey] = @ID
COMMIT TRANSACTION
SET @Counter = @Counter + 1
END