Cómo encuentra datos una base de datos
Si una biblioteca tiene solo diez libros, puedes revisarlos uno por uno y encontrar el que buscas enseguida. Pero ¿y si tiene millones? Revisarlos uno a uno te llevaría todo el día. Con una base de datos pasa lo mismo. Al principio busca recorriendo toda la tabla fila por fila, pero cuando los datos llegan a cientos de millones de registros, eso resulta demasiado lento. Por eso prepara un índice de antemano y salta directo al lugar correcto.
Al principio, recorre fila por fila
En la lección anterior dijimos que una base de datos organiza la información en filas, como una tabla. La forma más sencilla de encontrar algo en ella es empezar por la fila de arriba e ir bajando una a una, comprobando cada una.
Cuando encuentras una fila que coincide, te detienes. Recorrer así todo, de principio a fin y en orden, se llama búsqueda completa.
Toca el valor que quieres encontrar. Va bajando casilla por casilla y cuenta cuántas revisó hasta llegar.
Un valor que estaba arriba se encontró en pocas revisiones, mientras que uno que estaba abajo solo se alcanzó después de pasar por todo lo de arriba. Si el valor está al final, acabas mirando todas las filas.
Cuando hay pocas filas, esto es lo bastante rápido y no causa problemas. Entonces, ¿qué pasa cuando las filas se vuelven muchísimas?
Cuando los datos crecen, recorrer se vuelve lento
Una base de datos real tiene una cantidad enorme de filas; millones o incluso cientos de millones son algo común. Para encontrar el último valor con una búsqueda completa, hay que mirar cada una de esas filas.
Así que, si el número de filas se duplica, el número de revisiones también se duplica. El costo de buscar crece al mismo ritmo que las filas: ese es el límite de la búsqueda completa.
Toca para aumentar el número de registros. La barra muestra cómo suben con fuerza las revisiones necesarias para encontrar el último valor con búsqueda completa.
Cuanto más aumentabas la cantidad, más se alargaba la barra. Lo que en una tabla pequeña no importaba se vuelve una carga pesada en una grande.
Mientras recorras de principio a fin cada vez, este costo no se puede evitar. ¿Habrá una forma de ir directo al lugar sin recorrer nada? Por suerte, hay una forma ingeniosa.
Crear un índice para saltar directo
Piensa en el índice que hay al final de un libro. Las palabras están ordenadas alfabéticamente, con el número de página al lado. En lugar de hojear todo el libro, buscas la palabra en el índice y abres directamente esa página.
Una base de datos también puede preparar una lista así de antemano. Se llama índice.
Toca una etiqueta del índice ordenado. Sin recorrer la tabla, saltas directo a esa fila en uno o dos pasos.
Con el índice llegaste directo, sin recorrer la tabla. Incluso para un valor al final bastaron uno o dos pasos.
El secreto es que el índice se mantiene bien ordenado de antemano. En una lista ordenada puedes mirar el centro, decidir si el valor que buscas está en la primera mitad o en la segunda, descartar la otra mitad y repetir. Haciéndolo así, incluso entre un millón de elementos encuentras el que buscas en unos veinte pasos.
Comparar la búsqueda completa y el índice
Pongamos los dos métodos lado a lado y comparémoslos con la misma cantidad de registros. La búsqueda completa tiene que revisar tantas veces como filas haya. El índice aprovecha el orden y termina en muy pocas revisiones.
Aunque la cantidad sea la misma, los resultados son como el día y la noche. Por eso conviene crear un índice para los campos que se buscan a menudo.
Elige una cantidad y lanza las dos búsquedas. Compara lado a lado cuántas revisiones necesitaron la búsqueda completa y el índice para encontrar el mismo valor.
Cuanto más aumentabas la cantidad, más subía la barra de la búsqueda completa, mientras que la del índice casi no cambiaba. Justamente esa diferencia es la que hace brillar a los índices cuando los datos son grandes.
Claro que un índice no es gratis. Necesita espacio extra y, cada vez que entra una fila nueva, hay que actualizarlo para que siga ordenado. Aun así, para los campos que se buscan a menudo, vale la pena.
En resumen
En pocas palabras: la forma más sencilla de buscar es la búsqueda completa, que recorre todas las filas desde el principio. Con pocos datos, basta.
Pero cuando los datos llegan a cientos de millones de registros, el costo de recorrerlos sube con fuerza. Por eso se prepara un índice de antemano y se salta directo en uno o dos pasos. Con la misma cantidad de registros, el índice revisa muchas menos filas.
Toca en orden los puntos clave para repasar. (recorrer fila por fila → los datos se disparan → saltar con un índice → búsqueda completa vs índice)
Ahora ya sabes por qué una base de datos pasa de la búsqueda completa a los índices. Entonces, ¿cómo se construye realmente un índice?
Además de una lista ordenada, hay métodos como el hash y los árboles. La próxima lección mira primero el hash, que calcula un lugar directamente a partir de una sola etiqueta.