[Pgsql-ayuda] Optimizar INDICE

Martin Marques martin@bugs.unl.edu.ar
Mon, 11 Aug 2003 10:28:47 -0300


El Lun 11 Ago 2003 09:31, mondino@solsoft.com.ar escribi=F3:
> No s=E9 si realmente este es el tema, pero necesito que puedan orientarme=
 a
> crear un indice para acelerar las busquedas.
> Tengo dos campos numericos ademas de otros donde busco constantemente
> informacion, uno es PUNTODEVENTA y el otro NUMEROVENTA, las consultas
> demoran un monton de esta forma.
> "select * from detalledeventa where puntodeventa=3D9 and numeroventa>5025=
40
> order by numeroventa"
> Como creo un indice para que busque por este??

A ver que tal fueron las ense=F1anzas de Alvaro. :-)

Creo que lo correcto seria crear este indice:

CREATE INDEX nombre_indice ON nombre_tabla (puntodeventa,numeroventa);

Y cambiar tu consulta para que sea asi:

SELECT * FROM detalledeventa WHERE puntodeventa=3D9 and numeroventa>502540
ORDER BY puntoventa,numeroventa

Como veras, el order by con las dos columnas no cambia el orden, ya que tod=
os=20
los campos seleccionados tiene el mismo valor de puntoventa (9 en este caso=
).

Seria interesante que nos comentaras cuantos registros estas manejando en t=
us=20
tables, y que impacto de performace has tenido con estos cambios, utilizand=
o=20
el comando EXPLAIN antes y despues de los cambios.
Ademas deberias ver como esta configurado tu postgresql.conf, particularmen=
te=20
la opcion "sortmem =3D ".

Saludos... :-)

=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----------------------------------------------------------------