Soy nuevo en las bases de datos y he estado leyendo que agregar un índice a un campo que necesita buscar puede acelerar drásticamente los tiempos de búsqueda. Entiendo esta realidad, pero tengo curiosidad sobre cómo funciona realmente. He buscado un poco sobre el tema, pero no he encontrado ninguna respuesta buena, concisa y no demasiado técnica sobre cómo funciona.¿Por qué la adición de un índice a un campo de base de datos acelera la búsqueda en ese campo?
He leído la analogía de que es como un índice en la parte posterior de un libro, pero en el caso de un campo de datos de elementos únicos (como direcciones de correo electrónico en una base de datos de usuario), usando la parte posterior de la analogía del libro proporcionaría el mismo tiempo de búsqueda lineal que una búsqueda no indexada.
¿Qué está pasando aquí para acelerar tanto los tiempos de búsqueda? He leído un poco acerca de buscar usando B+-Trees, pero las descripciones son un poco demasiado profundas. Lo que estoy buscando es una descripción general de alto nivel de lo que está sucediendo, algo que ayude a mi comprensión conceptual de la misma, no detalles técnicos.
Esto todavía no proporciona una respuesta suficiente. En una tabla, las cosas se almacenan como campos (columnas), por lo que podemos pensar en un campo de datos como un capítulo en un libro. Entonces, si vamos al capítulo de correo electrónico del libro, sigue siendo igual de rápido buscar un correo electrónico que en el índice del libro. No escaneamos toda la tabla para encontrar un artículo que queremos encontrar ... solo el campo relevante. –
¿Está sugiriendo almacenar * TODOS * los datos nuevamente para cada fila en cada capítulo? De modo que tiene un capítulo de "apellido", ordenado por apellido, nombre, apellido, fecha de nacimiento, lugar de nacimiento, nombre de usuario, correo electrónico y una biografía de 1000 palabras. Luego tiene un capítulo de "nombre de usuario", ordenado por nombre de usuario, una vez más con el nombre, apellido, fecha de nacimiento, lugar de nacimiento, nombre de usuario, correo electrónico y una biografía de 1000 palabras. Luego tiene un capítulo de "correo electrónico", ordenado por correo electrónico, con el nombre, apellido, fecha de nacimiento, lugar de nacimiento, nombre de usuario, correo electrónico y una biografía de 1000 palabras. Esto parece ser un uso altamente ineficiente del espacio ... –
Bien, piénsalo de esta manera. Tenemos un libro que consta únicamente de direcciones de correo electrónico únicas (sin repeticiones). Eso es todo, ningún otro contenido. En este libro, si tuviéramos un índice, sería una copia exacta del contenido del libro, solo ordenado de alguna manera (aunque depende de quien haga el índice). Por lo tanto, este caso, la búsqueda de una dirección de correo electrónico en el libro o el índice es equivalente. Es por eso que digo que la analogía del índice del libro falla. Obviamente, hay más que eso, ya que una búsqueda de base de datos indexada encontrará un correo electrónico mucho más rápido que un escaneo completo. –