Cómo añadir un índice en la tabla options de WordPress y por qué deberías hacerlo

La tabla options (wp_options por defecto, o idealmente con tu prefijo personalizado) de WordPress es la que va acumulando información sobre cada uno de los plugins, ajustes y configuraciones, y más cosas, que vas instalando a lo largo de la vida de tu web.

Si a esto le sumamos que la mayoría de los plugins no eliminan líneas de esta tabla, verás que poco a poco se va convirtiendo en un monstruo con miles de líneas, que WordPress comprueba y lanza en cada carga de página.

Como ya podrás imaginar, una tabla options grande puede ralentizar enormemente tu web, puesto que tu WordPress debe hacer multitud de peticiones y lanzamiento de solicitudes antes de cargar cada página para cada visitante.

Ergo, si pudiésemos limitar esta cantidad de solicitudes tu web cargaría más rápido, al tener que realizar menos consultas ¿no es así?

El culpable: Autoload

El culpable de todo esto es el campo Autoload de cada línea de la tabla options, normalmente con el valor en Yes, o sea, que sí, que se carga automáticamente mediante la función wp_load_alloptions().

¿Cuál es el problema de Autoload?

Pues muy simple, que carga automáticamente toda opción de la tabla options, aunque:

  • La opción del plugin no necesite cargarse en cada página (Ejemplo: formulario de contacto que carga sus ajustes en toda la web cuando solo está en una página).
  • El plugin ya no esté instalado y activo.
  • El tema ya no esté activo.
  • El plugin debería haber creado sus propias tablas y no meter sus opciones en la tabla options

Y, el verdadero problema es cuando se autocarga demasiado pero ¿qué es demasiado?

Nota importante: En este artículo vamos a trabajar directamente con la base de datos. Antes de ejecutar ninguna consulta o tocar algo en la misma haz una copia de seguridad.

Ejecuta este comando SQL, puedes hacerlo en PHPMyAdmin de tu panel del hosting:

Nota: Cambia el prefijo del ejemplo por el tuyo, no te olvides.

Pulsa en el botón Continuar o ejecuta la consulta SQL y obtendrás el tamaño de la consulta de todos los valores con autoload e bytes. Y la regla debería ser:

  • Si el resultado del autoload_size es mayor de 1 Mb (aprox. 1.000.000 bytes) deberías hacer algo para optimizar esto.

En el ejemplo de la captura el tamaño es ridículo, así que si tus resultados son por el estilo ya acabaste de leer el artículo, dedica tu tiempo a bloguear algo.

Si obtuviste un resultado por encima de 1Mb, o simplemente quieres dedicar un rato a aprender algo más, sigue leyendo.

Dicho esto, ¿no sería mejor poder definir qué se carga y cuándo en nuestra instalación de WordPress?

Crea un índice en la tabla options

Hay varias maneras de adelgazar la tabla options, pero vamos a ver principalmente una que ha demostrado ser tremendamente eficaz y fácil de aplicar.

¿Por qué es la mejor solución?

La mejor solución a tablas options enormes que ralentizan tu web es crear un índice de la tabla options. En pruebas en sitios con muchas líneas con Autoload la diferencia entre cargar la tabla con y sin índice devuelven unos resultados fuera de toda duda.

Por si no sabes inglés: en rojo tiempo de carga Autoload sin índice, en azul con índice.

También puedes ver cómo se redujo el tiempo de carga en un sitio tras añadir un índice:

Las mejoras de rendimiento y velocidad son brutales, especialmente con bases de datos grandes, y lo mejor de todo es que crear un índice es muy sencillo.

Comprueba el índice

Una buena prueba a realizar antes de crear el índice es ver cuántas columnas (opciones) tienen Autoload en Yes, o sea, que se cargan. Se haría así:

Para luego las que no se cargan, las que tengan Autoload en No.

Los resultados se verán así:

La regla a aplicar sería la siguiente:

  • Si los valores en No superan el 60% del total  entonces no necesitas un índice.

Crear un índice con comandos SQL

Si te sientes cómodo, puedes crear el índice ejecutando un comando así:

De nuevo, puedes cambiar el nombre del índice, autoloadindex en el ejemplo, y debes cambiar el prefijo de la tabla options por el que tú uses.

Crear un índice con WP-CLI

Si prefieres usar la interfaz de comandos de WordPress WP-CLI, lo harías así:

Crear un índice con plugins

En el caso de que no quieras o no te atrevas con SQL, también hay un plugin que te ayudará en esta tarea de la creación del índice.

Se llama Index Autoload y no tiene ni siquiera ajustes, lo activas y listo.

Eso sí, aunque sea un plugin, la regla de hacer copia de seguridad de la base de datos sigue vigente, no se te olvide.

Este plugin crea el índice del Autoload igualmente.

Ya no quiero el índice

Como no hay nada como la libertad de elección, si en algún momento ya no quieres el índice puedes ejecutar este comando para borrarlo:

De nuevo, recuerda cambiar el nombre del índice y el prefijo de la tabla por los tuyos.

Si usaste la opción de hacerlo con el plugin al desactivarlo y borrarlo se borra también el índice.

¿De verdad merece la pena?

Aunque no hay nada mejor que hace una prueba, te daré algunos consejos:

  • Si las opciones en Autoload de tu tabla options pesan más de 1Mb merece la pena
  • Si el Autoload Yes supera el 60% merece la pena
  • Si tienes una tabla options grande merece la pena

El resultado es reducir las consultas de WordPress a la tabla options en más de un 90% en muchos casos, lo que redunda en mejores tiempos de carga en tu web.


Para aprender más

Aquí te dejo unos recursos para seguir aprendiendo sobre este asunto:

Valora este artículo para mejorar la calidad del blog ...

Al hacer una valoración se recoge una cookie con la IP de tu dispositivo

FlojitoNo está malEstá bienMe ha servidoFantástico (10 votos, promedio: 5,00 de 5)
Cargando…

Autor: Fernando Tellado

Fernando Tellado, apasionado de WordPress, profesor, consultor y ponente. Maquero cansino, padre de tres hijos y de una perrita Beagle, Bilbaíno de nacimiento, Español de corazón y ciudadano de donde me quieran. Autor del libro WordPress - La tela de la araña. Mi blog personal es Navegando con red, donde he crecido como escritor en la red y ofrezco mis visiones acerca de la Web 2.0 y la blogosfera.

Comparte esta entrada en
468 ad

Pin It on Pinterest

Share This