Какой исполняемый файл служб SSIS рекомендуется использовать для команды удаления - PullRequest
3 голосов
/ 10 мая 2019

У меня есть 2 БД на одном и том же стандарте SQL 2016сервер.Мне нужно удалить данные таблицы Prod, которые соответствуют идентификаторам в таблице Arh DB.Я делаю это партиями по 10000 строк.Таблицы на Prod и Arh DB имеют одинаковую схему.Мне нужно удалить большой объем данных (около 3000000 строк).Я использую исполняемый файл команды OLE DB с оператором SQL, но он медленный, как ад.Есть ли шанс ускорить это.

1 Ответ

1 голос
/ 11 мая 2019

Вместо использования команды OLEDB в задаче потока данных (которая выполняет операцию удаления строка за строкой), вы можете просто использовать Execute SQL Task и написать команду удаления с объединением:

DELETE T1
FROM Prod T1 INNER JOIN Arch T2
ON T1.id = T2.id

Если выобрабатывают миллионы строк, которые вы можете удалять в пакетах:

WHILE 1=1
BEGIN

    DELETE TOP(100000) 
    FROM Prod 
    WHERE EXISTS(SELECT 1 From Arch WHERE Prod.id = Arch.id)

    IF @@ROWCOUNT < 1 BREAK

END

Ссылки

...