[Pgsql-ayuda] buena indexacion

Martin Marques martin@bugs.unl.edu.ar
Mon, 11 Aug 2003 08:49:07 -0300


El Vie 08 Ago 2003 16:50, Alvaro Herrera escribi=F3:
>
> 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=3D... AND b=3D... AND c=3D...
> select * from blah where a=3D... AND b=3D...
> select * from blah where a=3D...
> (tambien en consultas de rangos, o sea a<10 and a>5, incluso varios
> campos)

Esto disipo mis dudas. :-)

> NO se puede usar en
> select * from blah where b=3D... AND a=3D...
> select * from blah where b=3D...
>
> 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=3D... and b=3D... order by a,b,c
> que
> select * from blah where a=3D... and b=3D... order by c

En este caso deberia agregar otro indice mas? O sea, si tengo una consulta=
=20
como la ultima lo mejor seria tener un indice sobre (a,b) y otro sobre (c),=
=20
cierto?

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

=2D-=20
Porqu=E9 usar una base de datos relacional cualquiera,
si pod=E9s usar PostgreSQL?
=2D----------------------------------------------------------------
Mart=EDn Marqu=E9s                  |        mmarques@unl.edu.ar
Programador, Administrador, DBA |       Centro de Telematica
                       Universidad Nacional
                            del Litoral
=2D----------------------------------------------------------------