paint-brush
Una descripción general de la indexación de bases de datos para principiantespor@pragativerma
5,320 lecturas
5,320 lecturas

Una descripción general de la indexación de bases de datos para principiantes

por Pragati Verma7m2022/09/09
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

Un índice de base de datos permite que una consulta recupere datos de una base de datos de manera eficiente. La indexación es una forma de colocar una tabla desordenada en un orden que maximizará la eficiencia al buscar un registro. Los índices se pueden relacionar con tablas específicas y constan de una o más claves. Una tabla puede tener múltiples índices construidos a partir de ella. La base de datos tendría que buscar en los 17 registros en el orden en que aparecen en la tabla, de arriba a abajo, uno a la vez, para buscar todas las posibles instancias de `company_id` como 18. Esto no es ideal y puede ser un problema al mirar dentro de una tabla de base de datos con una gran cantidad de datos.
featured image - Una descripción general de la indexación de bases de datos para principiantes
Pragati Verma HackerNoon profile picture
0-item


La indexación de la base de datos es la forma más común conocida y utilizada por los desarrolladores de back-end para optimizar las consultas de la base de datos. En este artículo, discutiremos sobre la indexación de bases de datos en detalle.


¿Qué es un índice de base de datos?

Un índice de base de datos permite que una consulta recupere datos de una base de datos de manera eficiente. En palabras más simples, la indexación es una forma de colocar una tabla desordenada en un orden que maximizará la eficiencia al buscar un registro.


Los índices se pueden relacionar con tablas específicas y constan de una o más claves. Además, una tabla puede tener múltiples índices construidos a partir de ella.


Cuando una tabla de base de datos no está indexada, no habrá un orden claro de las filas, por lo tanto, para completar cualquier consulta, deberá buscar en las filas de forma lineal, es decir, la consulta deberá buscar en cada fila para encontrar las filas con la condición coincidente. Como puede imaginar, esto no es ideal y puede ser un problema al mirar dentro de una tabla de base de datos con una gran cantidad de datos.


Por ejemplo, tenemos una tabla como la que se muestra a continuación:

ID DE LA COMPAÑÍA

UNIDAD

COSTO_UNITARIO

10

12

1.15

12

12

1.05

14

18

1.31

18

18

1.34

11

24

1.15

dieciséis

12

1.31

10

12

1.15

12

24

1.3

18

6

1.34

18

12

1.35

14

12

1,95

21

18

1.36

12

12

1.05

20

6

1.31

18

18

1.34

11

24

1.15

14

24

1.05


Y luego, queremos ejecutar una consulta de la siguiente manera:


 SELECT company_id, units, unit_cost FROM index_test WHERE company_id = 18


En este caso particular, la base de datos tendría que buscar en los 17 registros en el orden en que aparecen en la tabla, de arriba a abajo, uno a la vez, para buscar todas las posibles instancias de company_id como 18.


Esto solo consumirá más y más tiempo a medida que aumente el tamaño de la tabla. ¿Cómo puede ayudar aquí la indexación? La indexación puede ayudarnos a configurar la columna con la condición de búsqueda en ( company_id en este caso) de manera ordenada para optimizar el rendimiento de la consulta.


Con un índice en la columna company_id , la tabla se vería así:


ID DE LA COMPAÑÍA

UNIDAD

COSTO_UNITARIO

10

12

1.15

10

12

1.15

11

24

1.15

11

24

1.15

12

12

1.05

12

24

1.3

12

12

1.05

14

18

1.31

14

12

1,95

14

24

1.05

dieciséis

12

1.31

18

18

1.34

18

6

1.34

18

12

1.35

18

18

1.34

20

6

1.31

21

18

1.36


Ahora, la base de datos puede simplemente buscar company_id igual a 18 y devolver todas las columnas solicitadas para esa fila, y luego pasar a la siguiente fila. Si la siguiente fila también tiene company_id como 18 nuevamente, también devolverá las columnas de solicitud para esta fila, pero si la siguiente fila tiene company_id como 18, la base de datos sabe que puede detener la búsqueda aquí y terminar la respuesta. .


Esta fue una explicación bastante simple de qué son los índices de bases de datos y qué pueden hacer, pero hay mucho más en juego en el proceso. Echemos un vistazo más profundo a cómo funciona la indexación.


¿Cómo funciona la indexación de bases de datos?

En realidad, la tabla de la base de datos no se reordena cada vez que se modifican las condiciones de la consulta para optimizar el rendimiento de la base de datos, pero en realidad sucede que el índice hace que la base de datos cree una estructura de datos separada que debería poder ordenarse fácilmente.


Es importante tener en cuenta que cuando se crea un índice en una columna de una base de datos, se crea una estructura de datos en esa columna específica y ninguna otra columna se almacena en esta estructura de datos. Por ejemplo, en el ejemplo anterior, nuestra estructura de datos solo contendrá company_id y ninguna otra columna como unit o unit_cost .


Pero aquí surge una pregunta legítima: ¿cómo sabe la base de datos qué otros campos de la tabla se devolverán para una consulta? Tratemos de entender cómo.


Estructura de un índice de base de datos


Los índices de la base de datos almacenan punteros para simplemente hacer referencia a la información para la ubicación de la información adicional en la memoria. En otras palabras, el índice contiene el company_id y la dirección de esa fila en particular en la memoria. En este ejemplo, el índice de la base de datos se verá así:


ID DE LA COMPAÑÍA

PUNTERO

10

_123

10

_129

11

_127

11

_138

12

_124

12

_130

12

_135

14

_125

14

_131

14

_133

dieciséis

_128

18

_126

18

_131

18

_132

18

_137

20

_136

21

_134


Con este índice, la consulta puede verificar las filas en la columna company_id que tienen 18 como valor y luego, usando el puntero, puede encontrar la información relacionada para ese registro.


¿Qué estructuras de datos se utilizan para la indexación?

Habiendo entendido lo que esperamos del índice, echemos un vistazo a las estructuras de datos comunes que se pueden usar para la indexación de bases de datos:


B-Árboles

Los árboles B son las estructuras de datos de índice más utilizadas porque son rápidos para búsquedas, eliminaciones e inserciones. Todas estas operaciones son posibles en tiempo logarítmico y los datos contenidos en un árbol B se pueden clasificar fácilmente.


tablas hash

Los índices hash se utilizan comúnmente para describir índices que utilizan tablas hash . Debido a que las tablas hash son particularmente eficientes para buscar datos, las consultas que buscan una coincidencia exacta pueden procesarse rápidamente. La clave en un índice hash es el valor de la columna, y el valor en una tabla hash es una referencia a los datos de la fila de la tabla.


Las tablas hash, por otro lado, no son estructuras de datos ordenadas; por lo tanto, pueden ser ineficientes para otros tipos de búsquedas.


R-Árbol

R-tree se usa con frecuencia en bases de datos espaciales, generalmente para indexar información multidimensional, como coordenadas geográficas, rectángulos, polígonos, etc. Es útil para búsquedas como "buscar todas las cafeterías dentro de las 2 millas de mi ubicación".


Índice de mapa de bits

Los índices de mapa de bits son útiles para columnas que tienen un alto número de ocurrencias de tales valores, es decir, columnas con baja selectividad. Por ejemplo, considere una columna que tiene valores booleanos.


Cuándo usar índices

Los índices están diseñados para aumentar el rendimiento de la base de datos; por lo tanto, la indexación se puede usar siempre que necesitemos mejorar significativamente el rendimiento de la base de datos. Cuanto más se expanda su base de datos, más probable es que la indexación lo beneficie.


Sin embargo, lo primero y más importante que debe recordar es que el índice ocupa espacio adicional; por lo tanto, cuanto mayor sea la tabla, mayor será el índice. Cada vez que realice una operación de agregar, eliminar o actualizar, también deberá ejecutar la misma operación en el índice.


Cuándo no usar índices

Cuando se escriben datos en la base de datos, primero se actualiza la tabla original, seguida de otros índices basados en esa tabla. Cuando se realiza una escritura en la base de datos, los índices se vuelven inoperables hasta que se actualizan. Los índices nunca serán funcionales si la base de datos recibe escrituras continuamente.


Esta es la razón por la que los índices a menudo se aplican a bases de datos en almacenes de datos que obtienen nuevos datos de forma planificada (durante las horas de menor actividad) en lugar de bases de datos de producción que pueden recibir nuevas escrituras todo el tiempo.


¿Cómo crear un índice?

El siguiente fragmento de código muestra cómo crear un índice en una sola columna en una base de datos SQL:


 CREATE INDEX name_index ON Employee (Employee_Name);


Si desea crear un índice en varias columnas, el comando SQL se verá así:


 CREATE INDEX name_index ON Employee (Employee_Name, Employee_Age);


En general, un índice debe construirse en una tabla solo si se accederá con frecuencia a los datos de la columna indexada.


Conclusión

Por lo tanto, discutimos la indexación de bases de datos en detalle en este artículo y también aprendimos sobre las estructuras de datos utilizadas para implementar la indexación de bases de datos y también cuándo es recomendable usar índices y otros.


Para resumir todo, aquí hay un resumen rápido:

  • La indexación de bases de datos puede ayudar a reducir enormemente el tiempo de las consultas.
  • La indexación incluye una estructura de datos con columnas para los criterios de búsqueda, así como un puntero.
  • El puntero es la dirección en el disco de memoria de la fila que contiene la información restante.
  • Para mejorar el rendimiento de las consultas, se ordena la estructura de datos del índice (árbol B, árbol R, tabla hash o mapa de bits).
  • La consulta busca en el índice la fila especificada; el índice se refiere al puntero que descubrirá el resto de la información.


Esto es todo por este artículo. La indexación de bases de datos es un tema amplio y un poco complicado, espero que este artículo sea útil para comprender los conceptos básicos del concepto.


¡Sigue leyendo!