Clicky

Consejos de rendimiento: La indexación de las tablas de Joomla

rendimiento sitio web

En Joomla la mayoría de las tablas de valores no tienen índices

De vez en cuando todos nosotros notamos que nuestro sitio se vuelve un poco perezoso, incluso después de hacer todo el gzipping y el almacenamiento en caché. Añadiendo índices adecuados a las tablas de Joomla puede mejorar los tiempos de consulta, reduciendo eficazmente los tiempos de carga de la página.

Dependiendo de nuestra estructura de las tablas y la cantidad de datos, la indexación podría significar una ligera mejoría en el rendimiento. Prácticamente, los índices son un tipo de tablas que mantienen la clave principal, o campo de índice, y un puntero a cada registro en la tabla real.

Para empezar, es necesario configurar el servidor de desarrollo para iniciar las consultas que no utilizan índices. Para ello, agrega esto al archivo my.cnf del servidor MySQL (En CentOS en la carpeta /etc):

log_slow_queries = 1
slow_query_log_file = /var/log/mysql/slow.log
log-queries-not-using-indexes

Elegir columnas para indexar

Ahora bien, esta es la parte complicada. Si bien no hay ningún paso 1-2-3 en esto, unas reglas de oro (de las directrices de IBM SQL) pueden ser:

•  Se deben crear índices en columnas que utilizan con frecuencia cláusulas con WHERE.
•  Se deben crear índices en columnas que se utilizan con frecuencia para unir tablas.
•  Se deben crear índices en columnas que utilizan con frecuencia cláusulas ORDER BY.
•  Se deben crear índices en columnas que tienen algunos de los mismos valores o valores únicos en la tabla (es decir, la indexación de las columnas publicados/aprobados puede no ser una buena idea).
•  No se deben crear índices en las pequeñas tablas (tablas que utilizan sólo unos pocos bloques) porque un escaneo completo de tabla puede ser más rápido que una consulta indexada.

Agregar índices

Ir a phpmyadmin y abrir la estructura de una tabla. Bajo la tab de la columna, haz clic en "Añadir índice"

o

Puedes añadir el índice utilizando la sintaxis: ALTER TABLE nombre_tabla ADD INDEX (nombre_columna)

Consideraciones sobre el rendimiento

Es importante monitorear los tiempos de consulta cuando se añaden índices. Es posible que la adición de índices pueda tener un impacto negativo en los tiempos de consulta. Otra cosa importante a tener en cuenta es que los índices frenarán marginalmente sus inserciones, ya que el índice se actualiza en cada inserción. Así que es importante que no te vayas por la borda con tus índices y mantener tus tablas lo más limpias posible.

Aplicando esto a Joomla

En el caso de Joomla, la mayoría de las tablas de valores no tienen índices, y la adición de unos pocos pueden mejorar las cosas. Las tablas de sesión, usuarios, grupos, contenido, las categorías, extensión y menú son excelentes candidatas para la indexación y las columnas que tienen las keys externas deben ser indexadas.

Jesus_Caceres