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