Я использую 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;
С уважением, Шива.