[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