Conceptos básicos de los índices

Un índice es una estructura de disco asociada con una tabla o una vista que acelera la recuperación de filas de la tabla o de la vista. Un índice contiene claves generadas a partir de una o varias columnas de la tabla o la vista. Dichas claves están almacenadas en una estructura (árbol b) que permite que SQL Server busque de forma rápida y eficiente la fila o filas asociadas a los valores de cada clave.

Una tabla o una vista puede contener los siguientes tipos de índices:

  • Agrupado
    • Los índices agrupados ordenan y almacenan las filas de los datos de la tabla o vista de acuerdo con los valores de la clave del índice. Son columnas incluidas en la definición del índice. Sólo puede haber un índice agrupado por cada tabla, porque las filas de datos sólo pueden estar ordenadas de una forma.
    • La única ocasión en la que las filas de datos de una tabla están ordenadas es cuando la tabla contiene un índice agrupado. Cuando una tabla tiene un índice agrupado, la tabla se denomina tabla agrupada. Si una tabla no tiene un índice agrupado, sus filas de datos están almacenadas en una estructura sin ordenar denominada montón.
  • No agrupado
    • Los índices no agrupados tienen una estructura separada de las filas de datos. Un índice no agrupado contiene los valores de clave de índice no agrupado y cada entrada de valor de clave tiene un puntero a la fila de datos que contiene el valor clave.
    • El puntero de una fila de índice no agrupado hacia una fila de datos se denomina localizador de fila. La estructura del localizador de filas depende de si las páginas de datos están almacenadas en un montón o en una tabla agrupada. Si están en un montón, el localizador de filas es un puntero hacia la fila. Si están en una tabla agrupada, el localizador de fila es la clave de índice agrupada.
    • En SQL Server 2005, puede agregar columnas sin clave al nivel hoja de un índice no agrupado para eludir límites de claves de índice existentes, 900 bytes y columnas de 16 claves, y para ejecutar consultas indizadas y totalmente cubiertas. Para obtener más información, vea Índice con columnas incluidas.

Para obtener más información acerca de la arquitectura de índices, vea Arquitectura de tablas e índices.

Tanto los índices agrupados como los no agrupados pueden ser únicos. Esto significa que dos filas no pueden tener el mismo valor para la clave de índice. De lo contrario, el índice no es único y varias filas pueden compartir el mismo valor de clave. Para obtener más información, vea Directrices para diseñar índices únicos.

Los índices se mantienen automáticamente para una tabla o vista cuando se modifican los datos de la tabla.

Índices y restricciones

Los índices se crean automáticamente cuando las restricciones PRIMARY KEY y UNIQUE se definen en las columnas de tabla. Por ejemplo, cuando crear una tabla e identifica una columna particular a la clave primaria, SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005) crea automáticamente una restricción PRIMARY KEY y un índice en esa columna. Para obtener más información, vea Crear índices (motor de base de datos).

Cómo utiliza los índices el optimizador de consultas

Los índices bien diseñados pueden reducir las operaciones de E/S de disco y consumen menos recursos del sistema, con lo que mejoran el rendimiento de la consulta. Los índices pueden ser útiles para varias consultas que contienen instrucciones SELECT, UPDATE o DELETE. Fíjese en la consulta SELECT Title, HireDate FROM HumanResources.Employee WHERE EmployeeID = 250 en la base de datos AdventureWorks. Cuando se ejecuta la consulta, el optimizador de consultas evalúa cada método disponible para recuperar datos y selecciona el método más eficiente. El método puede ser un recorrido de la tabla o puede ser recorrer uno o más índices si existen.

Al realizar un recorrido de la tabla, el optimizador de consultas leerá todas las filas de la tabla y extraerá las filas que cumplen con los criterios de la consulta. Un recorrido de la tabla genera muchas operaciones de E/S de disco y puede consumir recursos. No obstante, puede ser el método más eficaz si, por ejemplo, el conjunto de resultados de la consulta es un porcentaje elevado de filas de la tabla.

Cuando el optimizador de consultas utiliza un índice, busca en las columnas de clave de índice, busca la ubicación de almacenamiento de las filas que necesita la consulta y extrae las filas coincidentes de esa ubicación. Generalmente, la búsqueda del índice es mucho más rápida que la búsqueda de la tabla porque, a diferencia de la tabla, un índice frecuentemente contiene muy pocas columnas por fila y las filas están ordenadas.

El optimizador de consultas normalmente selecciona el método más eficaz cuando ejecuta consultas. No obstante, si no hay índices disponibles, el optimizador de consultas debe utilizar un recorrido de la tabla. Su tarea es diseñar y crear los índices más apropiados para su entorno de forma que el optimizador de consultas tenga una selección de índices eficaces entre los que elegir. SQL Server 2005 proporciona el Asistente para la optimización de motor de base de datos para ayudar con el análisis del entorno de la base de datos y en la selección de los índices adecuados.

Vea también

Conceptos

Tipos de índice

Otros recursos

Descripción de los índices

Ayuda e información

Obtener ayuda sobre SQL Server 2005