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