Esta web usa cookies propias y de terceros para mejorar tu experiencia de navegación y realizar tareas de análisis. Al continuar con tu navegación entendemos que das tu consentimiento a nuestra política de cookies.

MY NEW STATIC BLOG. WHY? BECAUSE FUCK YOU, THAT'S WHY!




Llevo todo el día intentando mejorar el rendimiento de facturaScripts en las búsquedas de artículos, pero no hay manera, no consigo dar con el índice apropiado para mejorar el rendimiento.

La búsqueda predeterminada de artículos es esta:
SELECT referencia, codfamilia, equivalencia, descripcion, stockmin, stockfis, stockmax, pvp, codimpuesto, bloqueado FROM articulos WHERE referencia ILIKE '%$buscar%' OR codbarras = '$buscar' ORDER BY bloqueado ASC, referencia ASC;

Pero no tengo muy claro qué índice crear para mejorar el rendimiento. Llevo un rato buscando en internet pero no encuentro criterios claros ¿Debo crear el índice sobre (referencia,codbarras)? ¿O sobre
(bloqueado,referencia)?

¿Algún alma caritativa que me de una solución?

[actualizado]: Una modificación a la consulta anterior para usar el operador LIKE en lugar del ILIKE hace que use el índice sobre (bloqueado,referencia), lo cual mejorar ligaramente el rendimiento.

Permitir a PostgreSQL usar más memoria para la cache y la ordenación apenas tienen efectos visibles en el rendimiento.

Pero el ganador es sin duda:
sudo /etc/init.d/powernowd stop

Y es que con el procesador al mínimo de frecuencia resulta normal que el rendimiento empeore ... aun así seguiré investigando la forma de mejorar aun más el rendimiento.
14-04-2008
Inagotable

Supongo que sobre (referencia,codbarras) que es donde aplica el where que se encarga de reducir los resultados.

¿Has probado ambas posibilidades?

14-04-2008
neorazorx

Lo que mejor me funciona ahora son estos dos:
- upper(referencia).
- (bloqueado,referencia).

Y esta consulta modificada:
"SELECT referencia, codfamilia, equivalencia, descripcion, stockmin, stockfis, stockmax, pvp, codimpuesto, bloqueado FROM articulos WHERE upper(referencia) ILIKE ‘%" . strtoupp($buscar) . "%’ OR codbarras = ‘$buscar’ ORDER BY bloqueado ASC, referencia ASC;"

comments powered by Disqus

Powered by PussyPress.