¿Qué es?
Un índice es una estructura de datos adicional que una base de datos mantiene para poder localizar registros rápidamente, sin tener que recorrer toda la tabla fila por fila. Funciona de forma parecida al índice de un libro: en vez de leer página por página para encontrar un tema, saltás directo a la página indicada.
Internamente, la mayoría de los motores de bases de datos implementan los índices con estructuras como árboles B (B-trees) o tablas hash.
Por qué mejora el rendimiento
Sin índice, una consulta que busca un registro por un campo específico obliga al motor a hacer un “table scan”: revisar cada fila de la tabla. Con un índice sobre ese campo, la búsqueda pasa de ser lineal a logarítmica, lo que es una diferencia enorme en tablas con millones de filas.
El costo de indexar
Los índices no son gratis:
- Espacio en disco: cada índice es una estructura adicional que hay que almacenar.
- Escrituras más lentas: cada
INSERT,UPDATEoDELETEtiene que actualizar también los índices afectados. - Mantenimiento: índices mal elegidos o redundantes pueden degradar el rendimiento en vez de mejorarlo.
Buenas prácticas
Se recomienda indexar las columnas que se usan frecuentemente en cláusulas WHERE, JOIN y ORDER BY, y evitar crear índices sobre columnas que casi no se consultan o que cambian constantemente.
