Re: tunning

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Martin Li Causi <emlicausi(at)gmail(dot)com>
Cc: Edwin Quijada <listas_quijada(at)hotmail(dot)com>, gilberto(dot)castillo <gilberto(dot)castillo(at)etecsa(dot)cu>, jaime <jaime(at)2ndquadrant(dot)com>, pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: tunning
Date: 2010-10-07 20:44:30
Message-ID: 1286483936-sup-8131@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

In response to

  • RE: tunning at 2010-10-06 22:52:10 from Edwin Quijada

Responses

  • Re: tunning at 2010-10-08 10:31:13 from Martin Li Causi

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message David Samudio 2010-10-07 23:55:02 WebServices con Postgres y Perl
Previous Message Marcos Luis Ortiz Valmaseda 2010-10-07 18:26:53 Fwd: tunning