La sentencia EXPLAIN “explica” como son ejecutadas las consultas en MySQL. A través de la misma se puede saber si necesita leer toda la tabla, si se utilizan índices, el número de filas exploradas e información extra.

El uso de EXPLAIN puede servir mucho para optimizar cada una de las consultas que realicen nuestras aplicaciones y mejorar el desempeño de la misma, ya sea escribiendo de mejor forma las consultas o agregando índices a las tablas cuando así lo requieran.

Para utilizarla basta escribir EXPLAIN delante de nuestra consulta, por ejemplo:

EXPLAIN
SELECT o.id, o.descripcion, e.precio
FROM productos o LEFT JOIN precios e USING (id)

El resultado de la consulta devuelve una tabla con las siguientes columnas:

  • TABLE: tabla a la que se refieren las demás columnas de esta tabla
  • TYPE: el tipo de union que se está usando. Desde la mejor hasta la peor: system, const, eq_ref, ref, range, index, y ALL
  • POSSIBLE_KEYS: los posibles índices a utilizar
  • KEY: el índice utilizado
  • KEY_LEN: la longitud del índice
  • REF: Las columnas del índice que se está usando, o una constante si esta es posible
  • ROWS: cantidad de filas exploradas
  • EXTRA: información extra acerca de como MySQL resolvería la consulta.

Para un mayor detalle, recomiendo la lectura del artículo publicado en MySQL Hispano o de la documentación oficial de MySQL.