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