PostgreSQL - отключение ограничений

У меня есть таблица с примерно 5 миллионами строк, в которой есть ограничение fk, ссылающееся на первичный ключ другой таблицы (также около 5 миллионов строк).

Мне нужно удалить около 75000 строк из обеих таблиц. Я знаю, что если я попытаюсь сделать это с включенным ограничением fk, это займет недопустимое количество времени.

Исходя из опыта Oracle, моей первой мыслью было отключить ограничение, выполнить удаление и затем снова включить ограничение. PostGres позволяет мне отключать триггеры ограничений, если я являюсь суперпользователем (я не являюсь пользователем, но я вхожу в систему как пользователь, который владеет / создает объекты), но это не совсем то, чего я хочу.

Другой вариант - удалить ограничение и затем восстановить его. Я обеспокоен тем, что восстановление ограничения займет много времени, учитывая размер моих таблиц.

Какие-нибудь мысли?

изменить: после поощрения Билли я попытался удалить, не меняя никаких ограничений, и это заняло более 10 минут. Однако я обнаружил, что таблица, из которой я пытаюсь удалить, имеет собственный ссылочный внешний ключ ... дублированный (& не проиндексированный).

Последнее обновление - я удалил собственный ссылочный внешний ключ, сделал свое удаление и добавил его обратно. Билли прав со всех сторон, но, к сожалению, я не могу принять его комментарий как ответ!

Ответы на вопрос(6)

Ваш ответ на вопрос