From: | Silvio Quadri <silvioq(at)gmail(dot)com> |
---|---|
To: | Martin Li Causi <emlicausi(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: tunning |
Date: | 2010-10-12 20:32:58 |
Message-ID: | AANLkTimG9iU3TugESYyKSDD0np7AZ9s0kbctK5CXZnfG@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
2010/10/8 Martin Li Causi <emlicausi(at)gmail(dot)com>:
>
>
> 2010/10/7 Alvaro Herrera <alvherre(at)commandprompt(dot)com>
>>
>> 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 <alvherre(at)commandprompt(dot)com>
>> The PostgreSQL Company - Command Prompt, Inc.
>> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>
>
> Estimados, mil gracias por la ayuda!!
> vamos a ver que puedo hacer para mejorarlo
> nuevamnete muchas gracias!
>
Tenés un índice por persona y otro por jornada en la tabla de
proceso_persona_jornada. Deberías tener uno que sea id_persona/jornada
todo junto (o al revés, jornada / persona). Además, podrías cambiar el
in por un igual.
Saludos!
--
Silvio Quadri
From | Date | Subject | |
---|---|---|---|
Next Message | Jaime Casanova | 2010-10-12 20:55:00 | Re: tunning |
Previous Message | Alejandro Brust at federacion | 2010-10-12 18:46:22 | Re: implementar postgresql 9.0 en ubuntu 10.04 |