Re: [Pgsql-ayuda] buena indexacion

From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: Martin Marques <martin(at)bugs(dot)unl(dot)edu(dot)ar>
Cc: "'pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx'" <pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx>
Subject: Re: [Pgsql-ayuda] buena indexacion
Date: 2003-08-08 19:50:06
Message-ID: 20030808195006.GB18811@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Thu, Aug 07, 2003 at 12:06:07PM -0300, Martin Marques wrote:
> Quisiera saber si hay documentacion de como indexar correctamente mis tablas,
> especialmente con consultas que tienen condiciones sobre multiples columnas.
>
> Digamos, una duda que tengo es si el orden de las columnas es importante o no.

Hmmm... no estoy seguro de si entiendo la pregunta. Si tienes una tabla
blah (a, b, c, d)

y tienes un indice
idx_blah on blah (a, b, c)

Ese indice se puede usar en:
select * from blah where a=... AND b=... AND c=...
select * from blah where a=... AND b=...
select * from blah where a=...
(tambien en consultas de rangos, o sea a<10 and a>5, incluso varios
campos)

NO se puede usar en
select * from blah where b=... AND a=...
select * from blah where b=...

Si tienes un ejemplo mas concreto, seria mejor.

Ojo, cuando tienes una clausula ORDER BY puede haber diferencias
significativas. Por ej. es mucho mejor
select * from blah where a=... and b=... order by a,b,c
que
select * from blah where a=... and b=... order by c

(mira los EXPLAIN y EXPLAIN ANALYZE, deberia ser mas o menos obvio --
hay un paso de SORT si el indice no entrega los resultados en el orden
correcto, y ademas hay un paso innecesario de sort si omites las
columnas en el ORDER BY por creer que es suficiente con restringirlos en
la clausula WHERE)

--
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"Amanece. (Ignacio Reyes)
El Cerro San Cristóbal me mira, cínicamente, con ojos de virgen"

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alex Nu 2003-08-08 22:39:37 [Pgsql-ayuda] Actualizar una tabla
Previous Message Fernando Magariños Lamas 2003-08-08 19:30:49 Re: [Pgsql-ayuda] Experiencia con bases de datos GRANDE