Cómo crear un índice en MySQL y cuándo usar uno compuesto
Un índice acelera las lecturas a costa de ralentizar ligeramente las escrituras y ocupar espacio. La clave no es tener muchos índices, sino los correctos: los que sirven a tus consultas más frecuentes o más costosas.
- 1
Identifica la columna que filtra o une
Indexa columnas que aparecen en WHERE, JOIN u ORDER BY. Un índice sobre una columna que nadie filtra es peso muerto.
EXPLAIN SELECT * FROM pedidos WHERE cliente_id = 42; - 2
Crea un índice simple
Sobre una tabla grande, crear un índice puede tardar y consumir recursos. En producción hazlo en ventana de bajo tráfico.
CREATE INDEX idx_pedidos_cliente ON pedidos (cliente_id); - 3
Usa un índice compuesto cuando filtras por varias columnas
El orden importa: pon primero la columna más selectiva o la que uses en igualdad, y después la de rango u ordenamiento. Este índice sirve para filtrar por cliente_id, o por cliente_id y fecha juntos.
CREATE INDEX idx_pedidos_cliente_fecha ON pedidos (cliente_id, fecha); - 4
Confirma que la consulta usa el índice
Revisa el plan con EXPLAIN: busca que la columna key ya no sea NULL y que rows baje respecto al escaneo completo.
EXPLAIN SELECT * FROM pedidos WHERE cliente_id = 42 ORDER BY fecha;
// el error común
Un índice compuesto (a, b) sirve para filtrar por a, o por a y b, pero NO para filtrar solo por b. Es el error más común: crear el índice en el orden equivocado y creer que cubre una consulta que en realidad hace escaneo completo.
// cuándo conviene un experto
Cuando agregar índices ya no mejora nada o incluso empeora las escrituras, el problema suele estar en el diseño de consultas o del esquema. En dba.mx afinamos índices con base en el plan real de ejecución, con techo cerrado.
Agenda un Escaneo — desde USD $550Esta guía es orientativa y usa comandos de referencia. En producción, adapta a tu versión y prueba en un ambiente seguro primero.