Rendimiento y monitorización
Diagnosticar consultas LEFT JOIN lentas en WordPress
En instalaciones grandes, una consulta de WordPress que filtra por categorías o taxonomías puede tardar mucho al combinar posts y term_relationships, ordenar y limitar resultados. La presencia de LEFT JOIN no demuestra por sí sola que la consulta esté mal: importan datos, filtros, índices y plan de ejecución.
Contexto del caso histórico
Esta guía nació de incidencias con cientos de miles de entradas y remite al ticket 54346 de WordPress, donde se estudian consultas de categorías y alternativas con subconsultas.
Los resultados observados en determinadas instalaciones no garantizan tiempos de milisegundos para cualquier volumen de datos. Tampoco convierten un parche del ticket en una corrección oficial aplicable a todas las versiones.
Identificar la consulta real
- Reproduce una URL lenta y registra si había sesión, caché y filtros.
- Utiliza PHP X-Ray para localizar la consulta completa y el componente que la genera.
- Anota versiones de WordPress, MySQL o MariaDB y plugins implicados.
- En una copia con datos representativos, revisa el plan con
EXPLAINy los índices existentes.
Compara cuántas filas se examinan, dónde se filtra y cómo se ordena. Un plan diferente después de una actualización merece análisis, pero no identifica automáticamente un único culpable.
Evaluar una alternativa
El desarrollador puede probar una subconsulta, una expresión equivalente, un índice o una reformulación del uso de WP_Query. Verifica que conserve las mismas entradas, orden, exclusiones, duplicados y paginación, especialmente con combinaciones de taxonomías.
No sustituyas todos los JOIN ni elimines GROUP BY de forma global. Un cambio que acelere una categoría puede devolver resultados incorrectos en otra consulta.
Aplicar y mantener
Evita editar directamente los archivos del núcleo: las actualizaciones sobrescriben los cambios y un parche antiguo puede dejar de encajar. Si una adaptación temporal resulta imprescindible, debe mantenerla el desarrollador con control de versiones, pruebas y una vía de retirada.
Tras el cambio, compara varias ejecuciones y comprueba categorías, búsquedas, paginación y administración. Conserva el plan anterior y revierte si empeoran otras operaciones. Para consultas que también calculan totales, consulta la guía de SQL_CALC_FOUND_ROWS.
También te puede ayudar
- Consultas SQL lentas de tipo "SELECT SQL_CALC_FOUND_ROWS" Diagnostica consultas lentas de WordPress con SQL_CALC_FOUND_ROWS, identifica su origen y valida con...
- Consultas SQL para limpiar datos huérfanos y purgar la base de datos de WordPress Limpia datos huérfanos, revisiones y transitorios de WordPress con consultas verificadas, copia recu...
- Optimizar la tabla wp_options y los datos de tipo "autoload" Mide y reduce los datos autoload de wp_options, localiza opciones grandes, cron, transitorios y sesi...
- Acelerar y optimizar WordPress y WooCommerce paso a paso Optimiza WordPress y WooCommerce paso a paso revisando PHP, cron, LiteSpeed Cache, imágenes, base de...
¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.