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