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