From: | Mario <gonzalemario(at)gmail(dot)com> |
---|---|
To: | "Leonardo Castillo" <leonardo(at)hacer(dot)ula(dot)ve> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Ayuda con rendimiento.. |
Date: | 2007-02-23 19:22:00 |
Message-ID: | 2065a6cf0702231122j55af1bc2i74e208336c6bd301@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On 23/02/07, Leonardo Castillo <leonardo(at)hacer(dot)ula(dot)ve> wrote:
>
> "Unique (cost=59712.53..59712.55 rows=1 width=43) (actual
Esta bien "cochina" tu consulta, y en realidad creo que en realidad
se demora poco si tienes en cuenta lo que hace el pobre planificador.
)"
> " Hash Cond: (ctt.cod_titulo = tit.cod_titulo)"
> " -> Seq Scan on codtit ctt (cost=0.00..22194.38
> rows=521747 width=29) (actual time=13.744..6075.327 rows=523797 loops=1)"
> " Filter: ((portada)::text = '1'::text)"
Esos (Seq Scan) de alguna forma debes evitarlos porque al ser
secuenciales haces que se deba recorrer toda la lista de registros uno
por uno.
> " Index Cond: (ct04.cod_desc = de04.codesc)"
> " Filter: (((tipo)::text = 'EOPN'::text) AND
> (((descriptor)::text <> 'VALIDADO'::text) OR ((tipo)::text <> 'EOPN'::text)))"
> "Total runtime: 49818.338 ms"
>
me fije ademas que tienes varias comparaciones de texto, como por
ejemplo arriba dices buscar la palabra 'VALIDADO'. Eso lo puedes
evitar creando una tabla con 2 campos al menos, uno de tipo texto y
otro entero, luego haces referencia en las tablas que sean necesarios
para luego buscar por el numero indexado en vez del texto, el cual se
puede indexar pero no te dara el rendimiento que quieres obtener.
>
From | Date | Subject | |
---|---|---|---|
Next Message | Henry | 2007-02-23 19:26:51 | Re: CALCULO DE HORAS AL DIA |
Previous Message | Henry | 2007-02-23 18:53:01 | Re: CALCULO DE HORAS AL DIA |