Calculadora de tamaño de índice en base de datos: cuánto ocupa un índice B-tree
Estima cuánto espacio en disco ocupará un índice B-tree según el número de filas, el ancho de las columnas indexadas, la sobrecarga por entrada y el factor de llenado.
Cómo funciona
Bytes por entrada = ancho de la clave + sobrecarga · Tamaño del índice = filas × bytes por entrada ÷ factor de llenado (1 MB = 1,048,576 bytes)
Un índice B-tree guarda una entrada por cada fila: el valor de la clave indexada, un puntero de regreso a la fila y algo de información de control. Si multiplicas las filas por el tamaño de cada entrada obtienes los datos en bruto; luego divides entre el factor de llenado, porque los motores dejan a propósito espacio libre en cada página para que las inserciones futuras no provoquen divisiones de página, que son costosas. La estimación ignora los niveles superiores del árbol, que apenas suman un pequeño porcentaje, así que sirve bien para planear capacidad. La lección práctica: las claves anchas y los índices de más multiplican el almacenamiento, porque cada índice es una copia de sus columnas para todas las filas.
Ejemplo resuelto
Diego va a indexar una tabla de 8,000,000 de filas por una columna BIGINT de 8 bytes, con 12 bytes de sobrecarga: 20 bytes por entrada. En bruto son 8,000,000 × 20 = 160,000,000 bytes, es decir 152.6 MB (dividiendo entre 1,048,576). Con un factor de llenado del 80%, el índice ocupa 152.6 ÷ 0.80 ≈ 190.7 MB en disco.
Preguntas frecuentes
¿Por qué se divide entre el factor de llenado?
Las bases de datos dejan espacio libre en cada página del índice para que las inserciones y actualizaciones entren sin partir la página. Con un factor de llenado del 70%, las páginas quedan llenas al 70% y el tamaño en disco es el tamaño compacto dividido entre 0.70, unas 43% más grande.
¿Cada índice ocupa tanto?
Sí: cada índice adicional guarda su propia copia de las columnas indexadas para todas las filas, así que cinco índices en una tabla grande pueden ocupar más que la tabla misma. Los índices compuestos sobre varias columnas anchas son los más caros, y por eso eliminar los que no se usan ahorra espacio y acelera las escrituras.
¿Sirve igual para PostgreSQL, MySQL y SQL Server?
El modelo de B-tree con clave, puntero y sobrecarga es parecido en PostgreSQL, MySQL/InnoDB y SQL Server, pero la sobrecarga exacta y el formato de página cambian. Úsalo como estimación de planeación y compáralo con el tamaño real una vez creado el índice.
Calculadoras relacionadas
Esta calculadora tiene fines informativos. Verifica los resultados importantes antes de tomar decisiones.