Пожалуйста, порекомендуйте лучший вариант массового удаления

Я использую PostgreSQL 8.1.4. У меня есть 3 таблицы: одна является ядром (таблица 1), другие являются зависимыми (таблица 2, таблица 3). Я вставил 70000 записей в таблицу 1 и соответствующие записи в других 2 таблицах. Поскольку я использовал CASCADE, я мог удалить связанные записи, используя DELETE FROM table1; Он отлично работает, когда записи минимальны в моей текущей версии PostgreSQL. Когда у меня огромный объем записей, он пытается удалить все, но в течение многих часов нет признаков прогресса! Принимая во внимание, что оптовый импорт, делает в течение нескольких минут. Я хочу сделать массовое удаление в разумные минуты. Я попробовал TRUNCATE также. Как, TRUNCATE table3, table2, table1; Никаких изменений в производительности, хотя. Это займет больше времени и никаких признаков завершения! Из сети я получил несколько опций, например, удалив все ограничения и затем воссоздав их. Но ни один запрос не может быть успешно выполнен над таблицей, когда загружено больше данных! Пожалуйста, порекомендуйте мне лучшие решения для удаления всех записей в считанные минуты.

CREATE TABLE table1(
        t1_id   SERIAL PRIMARY KEY,
        disp_name       TEXT NOT NULL DEFAULT '',
        last_updated TIMESTAMP NOT NULL DEFAULT current_timestamp,
        UNIQUE(disp_name)
    ) WITHOUT OIDS;

CREATE UNIQUE INDEX disp_name_index on table1(upper(disp_name));

CREATE TABLE table2 (
        t2_id           SERIAL PRIMARY KEY,
        t1_id   INTEGER REFERENCES table1 ON DELETE CASCADE,
        type    TEXT
    ) WITHOUT OIDS;

CREATE TABLE table3 (
        t3_id           SERIAL PRIMARY KEY,
        t1_id   INTEGER REFERENCES table1 ON DELETE CASCADE,
        config_key      TEXT,
        config_value    TEXT
    ) WITHOUT OIDS;

С уважением, Шива.

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

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