EXPLAIN muestra el plan que eligió el optimizador — cómo accederá a cada tabla — sin ejecutar la consulta. Lo lees para confirmar que se usan los índices y que se examinan pocas filas.
EXPLAIN muestra el plan que eligió el optimizador — cómo accederá a cada tabla — sin ejecutar la consulta. Lo lees para confirmar que se usan los índices y que se examinan pocas filas.
const / eq_ref / ref (búsquedas por índice, bueno) → range → index (escaneo completo del índice) → ALL (escaneo completo de tabla, la señal de alarma).NULL = ninguno).Using index (cobertura, excelente), Using filesort / Using temporary (ordenación/agrupación en memoria o en disco — a menudo optimizable).EXPLAIN SELECT * FROM orders WHERE customer_id = 42 ORDER BY created_at;
-- +------+------+------+---------+--------+----------------+
-- | type | key | rows | Extra |
-- | ALL | NULL | 900k | Using where; Using filesort | <- scans everything, sorts
-- +------+------+------+---------+--------+----------------+
-- Add an index that covers the filter AND the sort order:
CREATE INDEX idx_cust_created ON orders (customer_id, created_at);
EXPLAIN SELECT * FROM orders WHERE customer_id = 42 ORDER BY created_at;
-- | type | key | rows | Extra |
-- | ref | idx_cust_created | 30 | Using where | <- seeks 30 rows, no filesort
El índice convirtió un escaneo ALL de 900k filas en una búsqueda ref de 30, y como created_at es la segunda columna, las filas salen ya ordenadas — el filesort desaparece.
Usa EXPLAIN ANALYZE (MySQL 8) para ver además los tiempos y recuentos de filas reales, detectando casos donde la estimación es incorrecta.
EXPLAIN es cómo reemplazas la conjetura por evidencia. Detectar type: ALL, un rows enorme o Using filesort te dice exactamente dónde falta un índice — el camino más rápido desde "la página va lenta" hasta una corrección dirigida.
Una biblioteca de preguntas de entrevista de IT con respuestas detalladas — de Junior a Senior.
Donar