
Las consultas lentas en MySQL. Ese es uno de los grandes dolores de cabeza en WordPress. Cuando una página se arrastra, el servidor de base de datos suele ser el culpable. Lo he visto mil veces: activas el slow query log y te llevas las manos a la cabeza. En esta guía te cuento cómo detectarlas, analizarlas y, sobre todo, cómo optimizarlas para que tu web vuelva a volar. En RedServicio (redservicio.net) ayudamos con todo esto: hosting, WordPress, servidores… lo que haga falta.
Índice
¿Y por qué debería importarte?
Cada vez que alguien entra a tu web, WordPress lanza decenas de consultas a la base de datos. Entradas, comentarios, opciones de plugins, el tema… todo son peticiones. Si alguna de esas consultas tarda más de un segundo, el usuario lo nota. Y Google también. Las consultas lentas MySQL suelen aparecer por falta de índices, consultas mal escritas, tablas que parecen un bosque sin podar o plugins que preguntan cosas que ya saben.
Señales de que algo va mal
- Tiempos de carga por encima de 3 segundos en páginas con contenido denso.
- El servidor se acelera (picos de CPU) cuando llegan tres visitas a la vez.
- Te aparece el temido «error de conexión a la base de datos» o timeout en el panel de administración.
- El wp-admin va lerdo, especialmente al guardar una entrada o actualizar opciones.
Diagnóstico: cómo cazar a las culpables
Antes de meter mano, hay que localizar las consultas problemáticas. Dos caminos: a pelo, en el servidor, o con plugins en WordPress.
Activar el slow query log de MySQL
El slow query log registra todas las consultas que superan un tiempo que tú decides. Para activarlo, entra por SSH a tu servidor y edita el archivo de configuración de MySQL (normalmente /etc/mysql/my.cnf o /etc/my.cnf). Añade o modifica estas líneas:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
El long_query_time va en segundos. 2 está bien para empezar. Luego reinicias MySQL (sudo systemctl restart mysql) y vas mirando el log de vez en cuando. Para analizarlo en condiciones, pt-query-digest (de Percona Toolkit) es una maravilla.
Un consejo: si no tienes SSH, muchos paneles de hosting (cPanel, Plesk) permiten activar esto desde la interfaz. Pregunta a tu proveedor.
Plugins que te hacen la vida más fácil
Si tocar archivos de configuración te da pereza, instala Query Monitor. Actívalo y en la barra de administración te aparece el número de consultas y el tiempo total de cada página. Pincha y ves el listado detallado: ordena por tiempo y localizas las más lentas en un momento. También sirven Debug Bar (más básico) o WP MVC si usas ese framework.
Manos a la obra: optimizar las consultas lentas
Una vez identificadas, toca actuar. Lo que mejor funciona: índices, reescribir consultas y usar caché.
Indexar las tablas
Los índices aceleran las búsquedas. En WordPress, las tablas que más sufren son wp_posts, wp_postmeta, wp_options y wp_usermeta. Si el log te muestra SELECT * FROM wp_postmeta WHERE meta_key = '...', puedes añadir un índice compuesto:
ALTER TABLE wp_postmeta ADD INDEX meta_key_value (meta_key, meta_value(100));
Pero ojo: demasiados índices pueden ralentizar las inserciones. No te vuelvas loco. Analiza cada caso con EXPLAIN antes de tocar nada.
EXPLAIN: tu mejor amigo
Antes de modificar nada, ejecuta EXPLAIN SELECT ... sobre la consulta lenta en phpMyAdmin o en línea de comandos. Mira la columna type: si ves «ALL» (table scan), falta índice. Si ves «index» o «ref», estás bien encaminado. También fíjate en rows para saber cuántas filas examina. A veces te llevas sorpresas.
Caché de consultas (y por qué no siempre sirve)
El query cache de MySQL guarda resultados de consultas idénticas repetidas. Pero ojo: desde MySQL 8.0 está obsoleto y en versiones modernas no se recomienda. Mejor usa caché a nivel de WordPress con plugins como Redis Object Cache o WP Rocket. Guardan en memoria los resultados de consultas frecuentes. Configurar un objeto caché reduce drásticamente el número de peticiones a la base de datos. Lo he probado y funciona.
Mantenimiento: lo que no puede faltar
- Limpiar revisiones de entradas: con WP-Optimize eliminas revisiones antiguas y borradores que hinchan la tabla
wp_posts. - Optimizar tablas: ejecuta
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options;o usa la opción de phpMyAdmin. - Actualizar estadísticas:
ANALYZE TABLE wp_posts;ayuda al optimizador de MySQL a elegir mejores índices. - Desactivar plugins que no usas: cada plugin añade consultas. Revisa de vez en cuando los que ya no necesitas.
Pregunta frecuente: ¿Es normal que una página de WordPress ejecute 50 consultas? Depende del tema y plugins. Un sitio optimizado puede tener entre 15 y 30 consultas por página. Si superas las 100 y alguna tarda más de 0.5 segundos, es momento de ponerse manos a la obra.
Para cerrar
Las consultas lentas MySQL no son una condena. Con las herramientas adecuadas —slow query log, Query Monitor, EXPLAIN— puedes encontrar las causas y aplicar indexación, caché y limpieza. Hazlo de forma regular y notarás la diferencia. No esperes milagros de la noche a la mañana, pero con paciencia tu WordPress volverá a ir fino. Si todo esto te parece un lío o prefieres que lo haga alguien con experiencia, en RedServicio (redservicio.net) estamos para echar una mano con servidores, bases de datos y cualquier problema técnico en WordPress. Contacta cuando quieras.

