Palabra clave MySQL EXPLAIN
La palabra clave `EXPLAIN` de MySQL se utiliza para obtener información sobre cómo se ejecuta una sentencia `SELECT`, `INSERT`, `UPDATE` o `DELETE`. Proporciona información sobre el plan de ejecución de la consulta, ayudando a los desarrolladores a optimizar las consultas a la base de datos.
Utilización
La palabra clave `EXPLAIN` se utiliza principalmente para diagnosticar y optimizar las consultas SQL mostrando detalles como los escaneos de tablas y el uso de índices. Se coloca antes de una consulta para revelar la estrategia de ejecución que utilizará MySQL.
EXPLAIN SELECT column1, column2, ...
FROM table_name
[WHERE condition];
En esta sintaxis, `EXPLAIN` precede a una consulta SQL para mostrar detalles sobre cómo planea MySQL ejecutarla. Para consultas que no sean `SELECT`, se recomienda `EXPLAIN FORMAT=JSON` para proporcionar información detallada.
Ejemplos
1. EXPLAIN básico en una consulta SELECT
EXPLAIN SELECT * FROM orders;
Este ejemplo proporciona detalles de ejecución, como el tipo de unión o el uso de índices, para recuperar todas las columnas de la tabla `orders`.
2. EXPLAIN con cláusula WHERE
EXPLAIN SELECT first_name FROM employees WHERE department_id = 5;
Aquí, `EXPLAIN` ayuda a identificar cómo influye la cláusula `WHERE` en el rendimiento de la consulta, como la utilización del índice para filtrar.
3. EXPLAIN con JOIN
EXPLAIN SELECT o.order_id, c.customer_name
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
WHERE c.city = 'New York';
Este ejemplo analiza una operación `JOIN`, proporcionando información sobre cómo se enlazan y filtran las tablas mediante la condición `WHERE`.
4. EXPLAIN con INSERTAR, ACTUALIZAR o ELIMINAR
Para las sentencias que no sean `SELECT`, utiliza `EXPLAIN FORMAT=JSON` para obtener información detallada:
EXPLAIN FORMAT=JSON INSERT INTO archive SELECT * FROM orders WHERE order_date < '2023-01-01';
EXPLAIN FORMAT=JSON UPDATE employees SET salary = salary * 1.1 WHERE department_id = 5;
EXPLAIN FORMAT=JSON DELETE FROM orders WHERE status = 'canceled';
Columnas de salida comunes de EXPLAIN
- id: El identificador del SELECT dentro de una consulta.
- select_type: El tipo de SELECT, como SIMPLE o PRIMARIO.
- mesa: El nombre de la tabla a la que se refiere la fila de salida.
- tipo: El tipo de unión.
- possible_keys: Los posibles índices que MySQL puede elegir.
- llave: El índice real que MySQL decidió utilizar.
- key_len: La longitud de la clave utilizada.
- ref: Las columnas o constantes comparadas con el índice.
- filas: La estimación de filas examinadas.
- Extra: Información adicional.
Consejos y buenas prácticas
- Comprueba regularmente las consultas complejas. Utiliza `EXPLAIN` para analizar y optimizar consultas complejas para mejorar su rendimiento.
- Combínalo con `ANALYZE`. Utiliza `ANALYZE TABLE` para actualizar las estadísticas de los índices y obtener resultados más precisos de `EXPLAIN`.
- Comprende las columnas de salida. Familiarízate con las columnas de salida `EXPLAIN` para interpretar eficazmente la información sobre el rendimiento.
- Optimiza en función de los resultados. Ajusta los índices, reescribe las consultas o rediseña los esquemas utilizando los conocimientos de `EXPLAIN` para mejorar la eficacia.
- Utiliza `EXPLAIN EXTENDED` o `EXPLAIN FORMAT=JSON` para realizar un análisis más detallado y adaptar las optimizaciones a casos de uso específicos.