El 17 de octubre de 2008 4:32, Rafael Comino Mateos <[EMAIL PROTECTED]>escribió:

>  Tengo una función que al ejecutarse debe trabajar con un conjunto de
> 1.000.000 de registros aproximadamente.
>
> Sobre ese conjunto de datos, en un cursor saco una a una las filas y la
> mayoría las borro y otras pues las guardo en una tabla, o hago cálculos,
> etc.
>
> El problema que tengo es de eficiencia, ya que la transacción se hace tan
> grande que ocupa demasiada memoria y se hace lentísimo la ejecución.
>
> Que puedo hacer?
>

¿Es necesario que ejecutes todo en una transacción?
¿Es necesario también tener un cursor?
Yo he ejecutado cosas similares con plpgsql y no tuve inconvenientes ...

Después de ejecutar muchos "delete"s sobre la tabla ¿Hacés el vacuum?
Quizás ejecuciones anteriores que no efectuaron el vacuum correspondiente
estén afectando la performance.

Saludos!
Silvio

Responder a