У меня есть таблица с примерно 5 миллионами строк, в которой есть ограничение fk, ссылающееся на первичный ключ другой таблицы (также примерно 5 миллионов строк).
Мне нужно удалить около 75000 строк из обеих таблиц. Я знаю, что если я попытаюсь сделать это с включенным ограничением fk, это займет неприемлемое количество времени.
Исходя из опыта Oracle, моей первой мыслью было отключить ограничение, выполнить удаление, а затем снова включить ограничение. PostGres, похоже, позволяет мне отключать триггеры ограничений, если я суперпользователь (я не являюсь, но я вхожу в систему как пользователь, который владеет / создал объекты), но, похоже, это не совсем то, что я хочу.
Другой вариант - сбросить ограничение, а затем восстановить его. Я беспокоюсь, что восстановление ограничения займет много времени, учитывая размер моих таблиц.
Есть предположения?
edit: после поощрения Билли я попытался выполнить удаление без изменения каких-либо ограничений, и это заняло более 10 минут. Однако я обнаружил, что таблица, из которой я пытаюсь удалить, имеет самореференциальный внешний ключ ... дублированный (& неиндексированный).
Финальное обновление - я удалил самореференциальный внешний ключ, удалил его и снова добавил. Билли во всем прав, но, к сожалению, я не могу принять его комментарий в качестве ответа!