среда, 25 февраля 2009 г.

MSSQL - удаление большого кол-ва записей

исследование темы - удаление большого кол-ва записей из БД.
результат: скрипт для пошагового удаления.
причем удалять придется не при запросе, а в автоматическом режиме. т.е. например раз в 10 часов...

* памятка:
нельзя удалять большое кол-во записей сразу, т.к.:
1. распухнет лог транзакций
2. может не хватить свободного места из-за п.1
3. доолгооо будет удалятся


WHILE 1 = 1
BEGIN
DELETE TOP (10000) --нужно использовать top т.к. rowcount в новых версиях не будет работать для delete
FROM Table1 --таблица, откуда удалять
WHERE ToBeDeleted = 't' --флаг "для удаления"

WAITFOR DELAY '000:00:05' -- 5 задержка

IF @@ROWCOUNT = 0
BREAK
END

Комментариев нет: