Мне интересно, как наиболее эффективно было бы удалить большое количество строк из PostgreSQL, этот процесс будет частью повторяющейся задачи каждый день для массового импорта данных (дельта вставок + удалений) в таблицу. Могут быть тысячи, потенциально миллионы строк, которые нужно удалить.
У меня есть файл первичных ключей, по одному на строку. Два варианта, о которых я думал, соответствовали приведенному ниже, но я не знаю / не понимаю достаточно внутренних особенностей PostgreSQL, чтобы принять обоснованное решение, которое было бы наилучшим.
- Выполните
DELETE
запрос для каждой строки в файле с простымWHERE
первичным ключом (или сгруппируйте удаления в пакетах,n
используяIN()
предложение) - Импортируйте первичные ключи во временную таблицу с помощью
COPY
команды, а затем удалите из основной таблицы с помощью объединения
Любые предложения будут высоко оценены!