Recomienda la mejor opción de eliminación masiva
Estoy usando PostgreSQL 8.1.4. Tengo 3 tablas: una es el núcleo (tabla1), otras son dependientes (tabla2, tabla3). Inserté 70000 registros en la tabla 1 y registros relacionados apropiados en otras 2 tablas. Como usé CASCADE, pude eliminar los registros relacionados usando DELETE FROM table1; Funciona bien cuando los registros son mínimos en mi versión actual de PostgreSQL. Cuando tengo un gran volumen de registros, intenta eliminarlos todos, ¡pero no hay signos de progreso de eliminación durante muchas horas! Mientras que, la importación a granel, lo hace en pocos minutos. Deseo hacer una eliminación masiva en minutos razonables. Intenté TRUNCATE también. Como, TRUNCATE table3, table2, table1; Sin embargo, no hay cambio en el rendimiento. ¡Solo lleva más tiempo y no hay signos de finalización! Desde la red, obtuve pocas opciones, como eliminar todas las restricciones y luego recrearlas estaría bien. Pero, ¡ninguna consulta parece ejecutarse con éxito sobre 'tabla1' cuando se cargan más datos! Recomiéndame las mejores soluciones para eliminar todos los registros en minutos.
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;
Regards, Siva.