Índices de base de datos:la guía telefónica de tu app
Los índices de base de datos explicados con la guía telefónica: cómo un índice pasó una consulta de 2.300 ms a 2,3 ms y por qué cada clave foránea necesita uno.
Los índices de base de datos, explicados con sencillez, funcionan exactamente como una guía telefónica: en lugar de leer cada página para encontrar un nombre, saltas directo a él. Sin un índice, tu base de datos lee todas las filas de una tabla para responder a una pregunta. Con uno, una consulta real sobre los mismos datos pasó de 2.300 milisegundos a 2,3, mil veces más rápida, porque examinó 47 filas coincidentes en lugar de 500.000.
Los índices son la herramienta de rendimiento de mayor palanca que tocarás jamás, no exigen cambiar nada de código y la IA suele olvidarse de añadirlos. Esto es lo que son, la regla que cubre el 90 % de los casos y las cifras reales de producción que muestran lo que está en juego.
Índices de base de datos explicados: ¿qué es un índice?
Piensa en cómo encontrarías «Gonçalves» en una guía telefónica. No empiezas en la página uno leyendo cada entrada: aprovechas que el libro está ordenado, saltas cerca de las G y llegas al nombre en segundos. Ahora imagina la misma guía con las entradas en orden aleatorio. Encontrar un nombre significa leer el libro entero, cada vez, en cada búsqueda.
Esa segunda guía es una tabla de base de datos sin índice. Las tablas guardan las filas sin ningún orden útil, así que una pregunta como «muéstrame las tareas de este cliente» obliga a la base de datos a examinar cada fila y quedarse con las que coinciden: un escaneo completo. Un índice es la guía ordenada que la base de datos mantiene aparte: una copia de búsqueda rápida de una columna (o de varias) que le permite saltar directo a las filas coincidentes.
La traducción a experiencia de usuario: 2,3 segundos es una página que tus clientes ven cargar. 2,3 milisegundos es instantáneo. La misma consulta, los mismos datos: la única diferencia es un índice.
La regla: indexa cada clave foránea
No necesitas convertirte en ingeniero de rendimiento. Una regla cubre la inmensa mayoría de los casos reales:
Indexa cada clave foránea y cada columna que filtres u ordenes con frecuencia.
Una clave foránea es cualquier columna que apunta a otra tabla: el cliente al que pertenece una tarea, el proyecto que factura una factura, el estado que lleva un registro. En una base de datos bien estructurada (la que obtienes al normalizar bien), estas columnas de referencia están por todas partes, y son justo lo que la base de datos usa para conectar tablas al responder preguntas. Cada una recibe un índice. Sin excepciones, sin juicio de valor.
Más allá de eso, indexa las columnas por las que tus pantallas filtran y ordenan constantemente: la organización a la que pertenece cada fila (la columna vertebral de las apps multi-tenant, filtrada en prácticamente todas las consultas), las fechas de creación para las listas de «lo más reciente primero» y la marca de tiempo de borrado lógico que casi toda consulta comprueba para ocultar registros eliminados. El hábito es una línea por columna al crear la tabla, CREATE INDEX idx_tasks_project_id ON tasks(project_id);, y es un hábito que la IA no mantendrá por ti: los esquemas generados suelen definir las referencias y saltarse los índices, lo que funciona perfectamente en una demo con 50 filas y se desploma con 500.000.
Índices compuestos: el segundo truco de la guía telefónica
Una guía telefónica no está ordenada por una sola cosa: está ordenada por apellido y luego por nombre. Eso te permite encontrar todos los «García» o exactamente «García, Juan». Lo que no puede hacer es encontrar todos los «Juan» sin importar el apellido: para eso vuelves a leer el libro entero.
Un índice compuesto es la misma estructura sobre dos o más columnas y obedece la misma ley de izquierda a derecha. Un índice sobre (organización, estado) acelera «todo lo de esta organización» y «todo lo de esta organización con este estado», pero no hace nada por «todo lo que tenga este estado en todas las organizaciones», porque el estado es el nombre de pila, no el apellido.
La consecuencia práctica: el orden de las columnas importa. Pon primero la columna por la que siempre filtras; en un producto multi-tenant, es la organización. Y los índices compuestos tienen un poder extra: si el orden del índice coincide con el orden de tu consulta, los resultados salen ya ordenados, saltándose por completo el paso de ordenar.
Cuándo NO indexar
Los índices no son gratis: cada uno consume espacio en disco y hay que actualizarlo en cada escritura, así que cada índice adicional hace las inserciones y actualizaciones un poco más lentas. Cuatro situaciones en las que conviene saltárselos:
Columnas de dos valores. Un indicador verdadero/falso divide la tabla más o menos por la mitad: saltar a «media guía» no ahorra nada. Tablas pequeñas. Por debajo de unas 1.000 filas, leer la tabla entera es prácticamente instantáneo; la clave primaria basta. Columnas que nunca buscas. Solo las columnas que aparecen en filtros, ordenaciones o conexiones merecen un índice; las notas de texto libre, no. Columnas que cambian constantemente en tablas con muchas escrituras. Cada cambio debe actualizar también el índice; en una tabla que sobre todo se escribe y rara vez se lee, el intercambio sale mal.
La regla de oro: cada índice debe justificar su existencia con una mejora medible en una consulta. Indexar «por si acaso» es como acabas con escrituras lentas y disco desperdiciado.
Cifras reales de producción
Tres mediciones reales de antes y después, cada una de una pantalla habitual en un producto SaaS:
| Escenario | Antes | Después | Mejora |
|---|---|---|---|
| Lista de tareas (filtro por organización + estado, lo más reciente primero) | 847 ms | 0,067 ms | 12.641x |
| Panel (recuento de tareas por proyecto) | 1.234 ms | 3,4 ms | 363x |
| Informe por rango de fechas (eventos de un año) | 456 ms | 0,4 ms | 1.140x |
Cada fila cuenta la misma historia: la base de datos dejó de leerlo todo y empezó a saltar. Y el flujo que las produjo lo puede repetir cualquier fundador: encuentra la pantalla lenta, pídele a la base de datos que explique cómo respondió a la consulta (toda base de datos tiene una función «explain», y pedirle a la IA que interprete su resultado funciona de maravilla), añade el índice que señala la explicación y mide de nuevo. Cuando el informe dice «escaneó 500.000 filas para devolver 20», has encontrado tu índice que falta.
12 semanasTu carrera corporativa nunca fue el planSolicita plaza en el Solopreneur Accelerator.Solicitar ahora →Preguntas frecuentes
¿Cómo encuentro los índices que me faltan?
Sigue la lentitud. Cuando una página se arrastra, toma su consulta, ejecuta la función explain de tu base de datos y busca escaneos completos de tabla: el informe dice literalmente cuántas filas se leyeron frente a cuántas se devolvieron. Los paneles de las bases de datos modernas también muestran las consultas más lentas y a menudo sugieren directamente el índice que falta. Pega cualquiera de ello en la IA para una interpretación en lenguaje llano.
¿Puedo tener demasiados índices?
Sí. Cada índice grava cada escritura y ocupa disco, así que una tabla con una docena de índices especulativos paga costes reales por consultas hipotéticas. Empieza por la regla (claves foráneas, organización, filtros habituales), añade más solo cuando una consulta lenta medida lo exija y elimina los índices que nadie usa.
¿Los índices aceleran también las escrituras?
No, al contrario, un poco. Un índice acelera la lectura, pero él mismo debe actualizarse cada vez que cambian los datos, así que las escrituras pagan un pequeño impuesto por índice. Para un producto SaaS típico, que lee mucho más de lo que escribe, el intercambio compensa de largo; simplemente no indexes columnas que nadie busca nunca.
¿Añadirá la IA los índices por mí automáticamente?
A veces, de forma irregular, y olvidar los índices de claves foráneas es una de las carencias más comunes de los esquemas generados por IA, porque la demo funciona bien sin ellos. Hazlo explícito: dile a la IA que cada tabla que cree debe indexar sus claves foráneas y las columnas que se filtran con frecuencia, y revisa el esquema contra esa regla como si fuera una lista de comprobación.
¿Hasta qué punto estás atrapado?
Haz el Índice de Asfixia Corporativa, la evaluación gratuita para saber si estás listo para ser solopreneur.