El 14/08/15 a las 14:28, Esneiker Enriquez Cabrera escribió:
> Hola amigos.
> 
> Estoy eliminando registros de una base de datos y se me está demorando
> demasiado, 6 minutos aproximadamente. Mando a realizar el delete en una
> tabla, y el gestor hace las eliminaciones en las restantes tablas por
> integridad referencial, pero la demora es mucha.

La llave primaria de la tabla donde se están borrando los datos no es
referencia de llaves foraneas de otras tablas?

De ser así, postgres tendrá que chequear integridad antes de borrar los
datos.

> Antes de realizar la eliminación elimino todos los índices implicados,
> elimino y luego los vuelvo a crear.
> 
> La eliminación la estoy ejecutando de la forma:
> 
> Delete from tabla1 where id in (select id from tabla 2)

Mejor así:

DELETE FROM tabla1 USING tabla2
  WHERE table1.id = tabla2.id;

También puedes ver el plan de ejecución usando EXPLAIN.

> En la tabla1 hay aproximadamente 7 mil registros, en las restantes hay un
> poco más.
> 
> Utilizo postgres 8.4.

Pensaste actualizar? Esto ya hace casi un año que no tienen  soporte
comunitario.


-- 
Martín Marqués                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a