Guillermo E. Villanueva escribió: > Si lo único que necesitas es diferenciar el valor mínimo de m.id del resto > de los id del mismo grupo podrías utilizar funciones de ventana con un solo > recorrido
Cierto, eso reduciría el tiempo de ejecución a la mitad, aunque la estructura del resultado sería distinta. (Sería cosa de ajustar la aplicación). El explain parece decir que el nodo de más afuera tarda 112297 milisegundos, es decir 112 segundos, es decir menos de dos minutos. ¿No habrá una capa externa adicional que agregue más tiempo de procesamiento? (como pgAdmin o algo así). Lo otro que yo me pregunto es ¿qué utilidad podría tener esta salida de 8 millones de registros? ¿Existe alguna condición que puedas poner en el WHERE para obtener un conjunto de resultados más acotado? También me pregunto si realmente los joins tienen que ser todos outer (lo cual puede limitar las opciones del optimizador para reordenar los joins de la forma más conveniente). Se puede ver que se traen todos los registro de stock_move (dos veces). ¿? -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, 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