Skip site navigation (1) Skip section navigation (2)

Re: sobre indices

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Andrea <andrea(at)compesa(dot)com(dot)br>
Cc: Postgresql-es <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: sobre indices
Date: 2006-10-24 15:31:46
Message-ID: 20061024153146.GF26593@alvh.no-ip.org (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Andrea escribió:
> Hola
> 
> Tengo una duda. (Trabajo con Postgresql 8.1.4 en Linux).
> 
> Hay una query que hace inner join con una tabla que tiene  la condicione 
> cnta_icdebitoconta = 1 --> resultado: 15.396       lineas 
>  y otra con 
> cnta_icdebitoconta = 2 --> resultado: 1.995.603  lineas 
> 
> Yo haga la consulta con la opcione cnta_icdebitoconta = 1 y la respuesta viene muy rapida
> 
> Pero con la opcione cnta_icdebitoconta = 2 si lleva mucho tiempo
> En la tabla hay indice para cnta_icdebitoconta 
> 
> Alguien tiene alguna idea que hacer para mejorar mi consulta.

cnta_icdebitoconta=2 es una condicion mucho menos selectiva (es decir,
trae una porcion mucho mas grande de la tabla), por lo que Postgres
probablemente esta escogiendo hacer un recorrido sencuencial de la tabla
en lugar de usar el indice.  De todas formas, si hiciera un recorrido de
indice probablemente se demoraria mucho mas de todas formas.

Yo creo que la consulta WHERE cnta_icdebitoconta=2 no tiene sentido,
porque 2 millones de tuplas no puede servirle a la aplicacion.  Creo que
debes hacer una consulta mas compleja que tenga mas condiciones en el
WHERE, o bien hacer JOIN con otras tablas que limiten esa consulta.

Creo que ya estas haciendo un JOIN.  Que tal si nos muestra la consulta
y el EXPLAIN ANALYZE?

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

pgsql-es-ayuda by date

Next:From: Ricardo Navarro LDate: 2006-10-24 15:52:25
Subject: RE: herramienta
Previous:From: LDC - Carmen BrandoDate: 2006-10-24 15:14:29
Subject: Herramienta CASE

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group