Optimización de Bases de Datos: Comprendiendo y Gestionando Índices SQL

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 3,6 KB

¿Qué es un índice?

Un índice es un mecanismo que permite acceder a un conjunto de datos de forma más eficiente que sin su uso, optimizando la velocidad de acceso a la información.

  • Los índices son objetos de base de datos diseñados para mejorar el rendimiento de las consultas.
  • Se aplican a una o más columnas en tablas y también a vistas (según la versión de SQL Server).
  • Las características de un índice afectan el uso de los recursos del sistema y el rendimiento general.
  • El Optimizador de Consultas (Query Optimizer) utilizará un índice si este mejora el rendimiento de la consulta.

Sin índices, una consulta deberá buscar en todos los registros de la tabla para encontrar coincidencias.

Un índice de base de datos está compuesto por una o más columnas de valores de la tabla (conocidas como clave del índice) y punteros a los registros correspondientes de la tabla.

  • Cuando se ejecuta una consulta usando la clave del índice, el Optimizador de Consultas utilizará el índice para ubicar los registros que cumplen con la consulta.
  • Para un rendimiento óptimo, los índices se crean sobre columnas que son comúnmente utilizadas en las consultas.
  • Por ejemplo, los usuarios pueden consultar la tabla de Alumno basándose en el apellido o el RUT del alumno.
  • Por lo tanto, se deberían crear dos índices para la tabla: uno por apellido y otro por el RUT del alumno.
  • Para ubicar eficientemente los registros, el Optimizador de Consultas usa un índice que concuerde con la consulta.
  • El Optimizador de Consultas usará el índice por el RUT del alumno cuando se ejecute la siguiente consulta:

SELECT * FROM Alumno WHERE Alu_Rut = 798

Tipos de Índice

Índices Agrupados (Clustered)

  • Un índice agrupado contiene los registros de la tabla a nivel hoja del B-tree.
  • Almacena los índices y datos de la fila en la misma hoja (orden físico).
  • Solo puede haber un índice Clustered por tabla.
  • Ejemplo: Diccionario.

Índices No Agrupados (Non-Clustered)

  • Un índice no agrupado es una estructura de índice separada, independiente del ordenamiento físico de los registros en la tabla.
  • Almacena los índices y punteros a la fila.
  • Ejemplo: Índice de un libro.

Optimización y Mantenimiento de Índices

La Fragmentación de Índices

  • Fragmentar es disgregar en partes.
  • El uso constante de la base de datos hace necesario el mantenimiento de los índices.
Problemas de la Fragmentación:
  • Bajo rendimiento de consultas a la base de datos.
Solución: Herramientas de Mantenimiento

Se pueden utilizar dos instrucciones principales:

  • REBUILD (Reconstruir)
    • Elimina y vuelve a crear el índice.
    • Es la que garantiza el resultado más óptimo (fragmentación 0%).
    • Es muy costosa en tiempo.
    • Bloquea las tablas a las que pertenece.
  • REORGANIZE (Reorganizar)
    • Reorganiza los índices dentro de las páginas que ocupa.
    • Opción mucho más ligera en cuanto a tiempo.
    • No bloquea las tablas a las que pertenece.
¿Cuándo usar REBUILD o REORGANIZE?
  • Cuando la fragmentación del índice supere el 30%, se recomienda REBUILD.
  • Cuando la fragmentación del índice esté entre el 10% y el 30%, se recomienda REORGANIZE.

Entradas relacionadas: