Excerpts from Martin Li Causi's message of jue oct 07 06:49:44 -0400 2010:

> >      AC.ID_ANORMALIDAD_CALC_REEMPLAZO IS NULL  AND
> >      AC.ID_PROCESO IN (
> >                         SELECT MAX(PROCESO_PERSONA_JORNADA.ID_PROCESO)
> >                         FROM PROCESO_PERSONA_JORNADA
> >                         WHERE
> >                             AC.ID_PERSONA =
> > PROCESO_PERSONA_JORNADA.ID_PERSONA AND
> >                             AC.ID_FECHA_JORNADA =
> > PROCESO_PERSONA_JORNADA.ID_FECHA_JORNADA
> >                        )  and

Este subselect es lo que está usando la mayor parte del tiempo de la
consulta ...  Corresponde al "SubPlan 1" en esta parte del explain:

> "                          ->  Index Scan using idx_anor_calc_fj on 
> anormalidad_calculo ac  (cost=0.00..7495125.36 rows=165749 width=48) (actual 
> time=1.813..268719.645 rows=467571 loops=1)"
> "                                Filter: ((id_anormalidad_calc_reemplazo IS 
> NULL) AND (id_tipo_justificacion = ANY ('{3,5,4,6,2,10,9,1,7}'::bigint[])) 
> AND (SubPlan 1))"
> "                                SubPlan 1"
> "                                  ->  Aggregate  (cost=15.93..15.94 rows=1 
> width=8) (actual time=0.571..0.571 rows=1 loops=467646)"
> "                                        ->  Bitmap Heap Scan on 
> proceso_persona_jornada  (cost=11.91..15.92 rows=1 width=8) (actual 
> time=0.564..0.565 rows=1 loops=467646)"
> "                                              Recheck Cond: (($0 = 
> id_persona) AND ($1 = id_fecha_jornada))"
> "                                              ->  BitmapAnd  
> (cost=11.91..11.91 rows=1 width=0) (actual time=0.562..0.562 rows=0 
> loops=467646)"
> "                                                    ->  Bitmap Index Scan on 
> idx_proceso_persona_jornada_persona  (cost=0.00..5.19 rows=118 width=0) 
> (actual time=0.098..0.098 rows=884 loops=467646)"
> "                                                          Index Cond: ($0 = 
> id_persona)"
> "                                                    ->  Bitmap Index Scan on 
> idx_proceso_persona_jornada_jornada  (cost=0.00..6.46 rows=287 width=0) 
> (actual time=0.451..0.451 rows=3844 loops=467646)"
> "                                                          Index Cond: ($1 = 
> id_fecha_jornada)"

Son 467646 veces por 0.5 segundos cada vez, o sea como 230 segundos de
los 270 segundos en total.  Creo que deberías buscar la manera de
reformular esto (¿quizás usando una función ventana?  ¿Usando un join
en vez de una subconsulta correlacionada? no sé).  Quizás sea necesario
reformular el modelo.

-- 
Álvaro Herrera <[email protected]>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a