Índice de base datos

Índice de base datos
Información sobre la plantilla
Parte de la familia SGBD Sistema gestores de base de datos

Índice de Base de Datos

Un índice es una estructura de datos definida sobre una columna de tabla (o varias) y que permite localizar de forma rápida las filas de la tabla en base a su contenido en la columna indexada además de permitir recuperar las filas de la tabla ordenadas por esa misma columna.

Tipos de índices

Índice simple y compuesto

Un índice simple está definido sobre una sola columna de la tabla mientras que un índice compuesto está formado por varias columnas de la misma tabla (tabla sobre la cual está definido el índice). Cuando se define un índice sobre una columna, los registros que se recuperen utilizando el índice aparecerán ordenados por el campo indexado. Si se define un índice compuesto por las columnas col1 y col2, las filas que se recuperen utilizando dicho índice aparecerán ordenadas por los valores de col1 y todas las filas que tengan el mismo valor de col1' se ordenarán a su vez por los valores contenidos en col2, función igual que la cláusula ORDER BY . Por ejemplo si definimos un índice compuesto basado en las columnas (provincia, localidad), las filas que se recuperen utilizando este índice aparecerán ordenadas por provincia y dentro de la misma provincia por localidad.

Índice agrupado y no agrupado

El término índice agrupado no se debe confundir con índice compuesto, el significado es totalmente diferente. Un índice agrupado (CLUSTERED) es un índice en el que el orden lógico de los valores de clave determina el orden físico de las filas correspondientes de la tabla. El nivel inferior, u hoja, de un índice agrupado contiene las filas de datos en sí de la tabla. Una tabla o vista permite un solo índice agrupado al mismo tiempo. Los índices no agrupados existentes en las tablas se vuelven a generar al crear un índice agrupado, por lo que es conveniente crear el índice agrupado antes de crear los índices no agrupados. Un índice no agrupado especifica la ordenación lógica de la tabla. Con un índice no agrupado, el orden físico de las filas de datos es independiente del orden indexado.

Índice único

Índice único es aquel en el que no se permite que dos filas tengan el mismo valor en la columna de clave del índice. Es decir que no permite valores duplicados.

Ventajas e inconvenientes de los índices

Ventajas

  • La utilización de índices puede mejorar el rendimiento de las consultas, ya que los datos necesarios para satisfacer las necesidades de la consulta existen en el propio índice. Es decir, sólo se necesitan las páginas de índice y no las páginas de datos de la tabla o el índice agrupado para recuperar los datos solicitados; por tanto, se reduce laE/S global en el disco. Por ejemplo, una consulta de las columnas a y b de una tabla que dispone de un índice compuesto creado en las columnas a, b y c puede recuperar los datos especificados del propio índice.
  • Los índices en vistas pueden mejorar de forma significativa el rendimiento si la vista contiene agregaciones, combinaciones de tabla o una mezcla de agregaciones y combinaciones.

Inconvenientes

  • Las tablas utilizadas para almacenar los índices ocupan espacio.
  • Los índices consumen recursos ya que cada vez que se realiza una operación de actualización, inserción o borrado en la tabla indexada, se tienen que actualizar todas las tablas de índice definidas sobre ella (en la actualización sólo es necesaria la actualización de los índices definidos sobre las columnas que se actualizan). Por estos motivos no es buena idea definir índices indiscriminadamente.

Consideraciones a tener en cuenta

  • Hay que evitar crear demasiados índices en tablas que se actualizan con mucha frecuencia y procurar definirlos con el menor número de columnas posible.
  • Es conveniente utilizar un número mayor de índices para mejorar el rendimiento de consultas en tablas con pocas necesidades de actualización, pero con grandes volúmenes de datos. Un gran número de índices contribuye a mejorar el rendimiento de las consultas que no modifican datos, como las instrucciones SELECT, ya que el [[optimizador

de consultas]] dispone de más índices entre los que elegir para determinar el método de acceso más rápido.

  • Se recomienda utilizar una longitud corta en la clave de los índices agrupados. Los índices agrupados también mejoran si se crean en columnas únicas o que no admitan valores NULL.
  • Un índice único en lugar de un índice no único con la misma combinación de columnas proporciona información adicional al optimizador de consultas y, por tanto, resulta más útil.

Sintaxis general para la creación de un índice

CREATE INDEX "NOMBRE_ÍNDICE" ON "NOMBRE_TABLA"(NOMBRE_COLUMNA); Digamos que tenemos la siguiente tabla: Tabla Nombre de Columna Tipo de Datos First_Name char(50) Last_Name char(50) Address char(50) City char(50) Country char(25) Birth_Date datetime

Si deseamos crear un índice tanto en Ciudad como en País, ingresaríamos, CREATE INDEX IDX_CUSTOMER_LAST_NAME ON Customer (Last_Name); No hay una regla estricta respecto de cómo nombrar un índice. El método generalmente aceptado es colocar un prefijo, tal como “IDX_”, antes del nombre de un índice para evitar la confusión con otros objetos de la base de datos. También es una buena idea brindar información sobre qué tabla y columna(s) se utilizará el índice. Por favor note que la sintaxis exacta para CREATE INDEX puede ser distinta según las diferentes bases de datos.

Fuente