Revisar planes MySQL EXPLAIN y rutas de acceso

Pega un plan ya obtenido de MySQL: FORMAT=JSON, un árbol de EXPLAIN ANALYZE o la tabla copiada de la consola. La página lista el tipo de acceso, la clave elegida y las filas estimadas de cada tabla, y señala escaneos completos, tablas temporales y filesort. No se envía nada a la base de datos ni se ejecuta ninguna consulta.

Se ejecuta localmente en tu navegador
Todo se procesa en tu navegador; no se envía nada.
Salida de MySQL EXPLAINPega un EXPLAIN FORMAT=JSON, un árbol de EXPLAIN ANALYZE, un resultado separado por tabulaciones o la tabla de consola de MySQL.
Entrada JSON, tabla o árbolLas estimaciones necesitan contexto de producciónSin conexión a base de datos

Es una revisión de solo lectura. Nunca ejecuta una consulta ni envía SQL a MySQL.

Filas de acceso
Aún no hay filas de acceso para mostrar.

Cómo leer un plan de MySQL a partir de la salida de EXPLAIN

Pega un plan que ya tengas de MySQL: la salida FORMAT=JSON, un árbol de EXPLAIN ANALYZE o la tabla de consola del cliente mysql. La página lista cada tabla que encuentra con su tipo de acceso, la clave elegida y las filas estimadas, y señala escaneos completos de tabla, tablas temporales y filesort. Todo se ejecuta en el navegador: no se lanza ninguna consulta ni se envía nada a una base de datos.

El analizador lee las tres formas que imprime MySQL y no inventa cifras: cuando un plan no trae estimación de filas, la columna muestra — en lugar de 0. Las estimaciones proceden de las estadísticas del servidor, así que son la previsión del planificador, no una medición real.

  1. Ejecuta EXPLAIN en MySQL y copia el resultado completo: EXPLAIN FORMAT=JSON para el plan JSON, EXPLAIN ANALYZE o EXPLAIN FORMAT=TREE para el árbol, o la tabla de EXPLAIN del cliente.
  2. Pégalo en el campo y pulsa Analizar localmente. Cargar ejemplo rellena el campo con un plan JSON de dos tablas que incluye una subconsulta dentro del objeto table.
  3. Lee primero los cinco contadores: filas de acceso, filas estimadas, escaneos completos, accesos con clave y escaneos de índice.
  4. Revisa los hallazgos: acceso ALL, escaneo completo de índice, tabla temporal, filesort y resultados intermedios aparecen nombrados con la tabla a la que pertenecen.
  5. Mira la tabla de abajo para ver la clave elegida y la columna extra (claves posibles, búfer de unión, condición adjunta) y pulsa Copiar para llevar el informe a una incidencia antes de cambiar un índice.

Qué informa el analizador y qué no puede ver

Filas, claves y significado de los contadores

Filas de acceso cuenta las entradas de tabla que el analizador encontró en el plan, no las filas que recorre la consulta; cada entrada es una línea de la tabla inferior. Filas estimadas suma los valores rows_examined_per_scan (o rows) que puede leer y muestra — cuando ninguna entrada trae un número. Escaneos completos cuenta el tipo de acceso ALL, escaneos de índice cuenta INDEX y accesos con clave cuenta las entradas en las que sí se eligió una clave.

La tabla conserva la terminología del plan: tipo de acceso, clave elegida, filtrado y una columna extra que nombra las claves posibles cuando no se eligió ninguna, el búfer de unión o la condición adjunta. possible_keys es una lista de candidatas, no un índice elegido, así que nunca aparece en la columna de clave elegida.

Salida JSON, árbol y consola

MySQL 8 guarda las subconsultas y las vistas materializadas dentro del objeto table (attached_subqueries, materialized_from_subquery). El analizador desciende hasta ellas, así que una tabla interna aparece como una fila propia, y una autocombinación que escanea la misma tabla dos veces se informa dos veces en lugar de colapsarse.

La salida de árbol de EXPLAIN ANALYZE se lee línea a línea (Table scan, Index scan, Index range scan, Index lookup…), y cuando el árbol trae filas reales la página las muestra junto a la estimación. La salida de consola se lee con columnas separadas por tabulaciones o barras, así que la tabla del cliente mysql puede pegarse tal cual. Los planes con más de 250 filas de acceso se cortan en la fila 250 y el informe lo indica.

Límites: un plan, un momento

La página no puede conectarse a MySQL: no ejecuta la consulta, no ve tu esquema ni tus estadísticas y no puede saber si el servidor seguiría eligiendo este plan. Un plan tomado sin ANALYZE solo trae estimaciones, y un plan de otra versión de MySQL puede nombrar claves o tipos de acceso que esta página no conoce.

Nada queda en caché entre análisis: uno nuevo sustituye los contadores, los hallazgos, la tabla y el informe anteriores, y un texto que no sea un plan EXPLAIN vacía los paneles en lugar de dejar un informe viejo que Copiar podría entregar. El informe repite el formato, los contadores y todos los hallazgos, así que las notas viajan con las cifras.

Herramientas recientes: