[Pgsql-ayuda] buena indexacion

Alvaro Herrera Munoz alvherre@dcc.uchile.cl
Mon, 11 Aug 2003 15:31:42 -0400


On Mon, Aug 11, 2003 at 08:49:07AM -0300, Martin Marques wrote:
> El Vie 08 Ago 2003 16:50, Alvaro Herrera escribi?:

> Esto disipo mis dudas. :-)

Bien!


> > 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
> 
> En este caso deberia agregar otro indice mas? O sea, si tengo una consulta 
> como la ultima lo mejor seria tener un indice sobre (a,b) y otro sobre (c), 
> cierto?

No, porque tendrias que mantener dos indices en lugar de uno (lo cual tiene
sobrecosto adicional).  Creo que lo mejor seria tener un indice en 
(a,b,c) y usar la consulta de mas arriba.

Otra cosa que hay que tener presente son los indices parciales y los
indices funcionales.

> P.D.: Cual es la mejor politica para incluir adecuadamente los indices? Ir 
> agregandolos cuando la aplicacion esta usandose, de acuerdo a los datos y 
> consultas que se realizan? Pergunto porque nuestra aplicacion aun no esta en 
> uso y me parece que deberia esperar para ver cuales van a ser los indices mas 
> adecuados para poner.

Hmm... no estoy seguro.  Creo que deberias ir pensando cuales van a ser
los indices que vas a usar a medida que construyes la aplicacion.  Porque
no creo que vayas a permitirle a los usuarios de la aplicacion escribir
consultas como se les ocurra, cierto?  Tampoco puedes llegar y definir
todos los indices que te parezcan necesarios mirando el uso de la BD,
porque podrias caer en la trampa de que dos consultas que podrian usar
el mismo indice usen uno distinto por expresar las columnas en distinto
orden...

Supongo que "que consultas se van a hacer" es parte del diseņo que deberias
tener en mente a medida que construyes la aplicacion (en esto, desarrollar
usando una metodologia agil como programacion extrema ayuda mucho, me parece).

-- 
Alvaro Herrera (<alvherre[@]dcc.uchile.cl>)
"La soledad es compaņia"