Módulo 7 · Diseñar estructuras

Mejora búsquedas con índices

Entiende cuándo un índice ayuda y qué coste añade.

22 minNivel IntermedioAntes necesitas: Consultas, filtros, JOIN y tablas

0 de 45 lecciones

Al terminar, podrás

  • Relacionar un índice con una consulta concreta.
  • Proponer el orden de columnas de un índice compuesto.
  • Usar un plan de ejecución como evidencia, sin prometer una mejora automática.

Recupera lo aprendido: ¿Qué diferencia hay entre una regla de integridad y una estructura para buscar filas?

La idea clave

Un índice es una estructura adicional que ayuda al motor a localizar filas sin recorrer siempre toda la tabla. Su utilidad depende de la consulta, la distribución de datos, el tamaño y el optimizador. También ocupa espacio y añade trabajo a las escrituras.

Secuencia profesional: consulta lenta → plan de ejecución → hipótesis de índice → nueva medición. Crear índices “por si acaso” puede empeorar el mantenimiento.

La sintaxis básica

Índice compuesto
CREATE INDEX idx_pedidos_cliente_fecha
ON pedidos (cliente_id, fecha);

SELECT id, fecha, total
FROM pedidos
WHERE cliente_id = 1
ORDER BY fecha;

Ejemplo paso a paso

La consulta filtra primero por cliente_id y después ordena las filas de ese cliente por fecha. Por eso ese mismo orden de columnas es una candidata razonable para el índice.

Consulta que motiva el índice
SELECT id, fecha, total
FROM pedidos
WHERE cliente_id = 1
ORDER BY fecha;
Pedidos de Ana Torres
idfechatotal
1012025-05-02128,40
1032025-05-1024,90
1112025-06-01249,00

Cómo evaluarlo

  1. Ejecuta EXPLAIN o la herramienta equivalente antes del cambio.
  2. Crea el índice en un entorno de prueba y actualiza estadísticas cuando el motor lo requiera.
  3. Compara el plan y el tiempo con datos representativos; en una tabla de 18 filas, un recorrido completo puede seguir siendo la mejor decisión.
Comprueba tu comprensión

¿Qué evidencia demuestra mejor que un índice ayuda?

Un error habitual

Invertir las columnas sin mirar la consulta

Índice menos alineado
CREATE INDEX idx_pedidos_fecha_cliente
ON pedidos (fecha, cliente_id);

Para la consulta que exige igualdad por cliente y orden por fecha, (cliente_id, fecha) suele ajustarse mejor al patrón. El orden de un índice compuesto importa; no es una bolsa de columnas intercambiables.

Qué comprueba la práctica: el nombre del índice, la tabla y las columnas. Este motor educativo no reproduce el coste de acceso de un índice. Para comprobar una mejora de velocidad, usa EXPLAIN y mediciones sobre un motor real con suficientes datos.

Practica con datos

Laboratorio SQL

Resuelve la consulta

Pendiente

Escribe la sentencia SQL que cree el índice idx_pedidos_cliente sobre la columna cliente_id de pedidos.

Resultado esperado: el índice idx_pedidos_cliente sobre pedidos(cliente_id).

Ver tablas y datos

Cargando la estructura del ejercicio…

La consulta usa datos ficticios y se ejecuta solo en este navegador.

Fuentes técnicas consultadas

Todos los motores disponen de índices y planes, pero sus tipos, estadísticas, costes y herramientas de diagnóstico no son idénticos.

Comprueba si puedes explicarlo

¿Crear un índice garantiza que el motor lo use o que todas las consultas sean más rápidas?

Ver respuesta razonada

No. Depende de la consulta y los datos. Revisa el plan y mide en un motor real. El laboratorio comprueba la definición del índice, no reproduce su rendimiento.

Responde antes de abrir la explicación. Si necesitaste ayuda, cierra la respuesta y vuelve a explicarlo con tus palabras antes de dar la lección por aprendida.

Qué debes recordar

  • Diseña índices para consultas observadas, no para columnas aisladas.
  • El orden de las columnas de un índice compuesto cambia qué patrones puede resolver bien.
  • Mide lecturas y escrituras antes y después.

A continuación: continúa con Práctica: diseña una tabla con reglas e índice.

Conceptos relacionados