Volver / Casos Experiencia documentada / RENDIMIENTO

Una consulta lenta, explicada con EXPLAIN.

Análisis de filtros y ordenación en una consulta Doctrine sobre MySQL.

Intervenciones previas anonimizadas. Describimos las evidencias disponibles y sus límites; no representan clientes de LATAM.

Contexto

Consulta de últimas publicaciones con filtros de visibilidad, roles y relaciones asociadas.

Problema

Un EXPLAIN ANALYZE mostró aproximadamente 252 ms para devolver tres registros. El plan incluía filtrado, joins y ordenación por created_at e id.

Intervención

Revisión de filtros de roles, uso de JSON_CONTAINS y adición de índices. Inspección del plan para localizar el coste de la ordenación y la selección.

Se analiza la selectividad de cada filtro y si el índice ayuda también al orden requerido. Una consulta que devuelve pocos registros puede examinar miles antes de ordenar; añadir un índice no implica que el optimizador vaya a usarlo ni que desaparezca el coste de los joins.

Resultado observado

Se documentó el plan de ejecución y la persistencia de la ordenación como punto de análisis. No se dispone de una medición final comparable para publicar una mejora porcentual.

Límites y siguiente paso

El siguiente paso es comparar planes y latencias con los mismos datos y carga. El rendimiento depende de la distribución de datos y del patrón de acceso.

El protocolo de comparación debe conservar el mismo conjunto de datos, parámetros, estado de caché y concurrencia. Además del tiempo total se revisan filas examinadas, tipo de acceso, ordenación y coste de escritura de los nuevos índices.