[Pgsql-ayuda] buena indexacion
Ricardo Mercado Araneda
rmercado@dportales.cl
30 Aug 2003 12:07:21 -0400
Para indices que se usaran en comparaciones de igualdad usa hash
CREATE INDEX <nombre_indice> ON <nombre_tabla> USING hash (<Atributo>);
Para indices que se usaran en comparaciones de rangos de valores usa
btree
CREATE INDEX <nombre_indice> ON <nombre_tabla> USING btree (<Atributo>);
El vie, 08 de 08 de 2003 a las 15:50, Alvaro Herrera escribió:
> 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)
--
_______________________________________________________________________________
RICARDO IGNACIO MERCADO ARANEDA
Rmercado@dportales.cl
Dirección de Sistemas
Organización Educacional Diego Portales
(041)-910252 anexo 225
Concepción