Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un índice es una estructura en disco asociada a una tabla o vista que acelera la recuperación de filas de la tabla o vista. Un índice contiene claves compiladas a partir de una o varias columnas de la tabla o vista. Estas claves se almacenan en una estructura (árbol B) que permite a SQL Server buscar la fila o filas asociadas a los valores de clave de forma rápida y eficaz.
Una tabla o vista puede contener los siguientes tipos de índices:
Agrupado
Los índices agrupados ordenan y almacenan las filas de datos en la tabla o vista en función de sus valores clave. Estas son las columnas incluidas en la definición de índice. Solo puede haber un índice agrupado por tabla, ya que las propias filas de datos se pueden ordenar en un solo orden.
La única vez que las filas de datos de una tabla se almacenan en orden ordenado 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 ningún índice agrupado, sus filas de datos se almacenan en una estructura desordenada denominada montón.
No agrupado
Los índices no clúster tienen una estructura independiente de las filas de datos. Un índice no clúster contiene los valores de clave de índice no clúster y cada entrada de valor de clave tiene un puntero a la fila de datos que contiene el valor de clave.
El puntero de una fila de índice en un índice no clúster a una fila de datos se denomina localizador de filas. La estructura del localizador de filas depende de si las páginas de datos se almacenan en un montón o en una tabla agrupada. En un heap, un localizador de filas es un puntero a la fila. Para una tabla agrupada, el localizador de filas es la clave de índice agrupada.
Puede agregar columnas sin clave al nivel hoja del índice no agrupado para pasar por alto los límites existentes del índice de clave, que son 900 bytes y 16 claves, y ejecutar consultas que estén totalmente cubiertas e indexadas. Para más información, consulte Create Indexes with Included Columns.
Los índices agrupados y no clúster pueden ser únicos. Esto significa que ninguna de las dos filas puede 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 Crear índices únicos.
Los índices se mantienen automáticamente para una tabla o vista cada vez que se modifican los datos de la tabla.
Consulte Índices para obtener tipos adicionales de índices de propósito especial.
Índices y restricciones
Los índices se crean automáticamente cuando las restricciones PRIMARY KEY y UNIQUE se definen en columnas de tabla. Por ejemplo, al crear una tabla e identificar una columna determinada para que sea la clave principal, el motor de base de datos crea automáticamente una restricción PRIMARY KEY e índice en esa columna. Para obtener más información, vea Crear claves principales y Crear restricciones únicas.
Cómo usan los índices el optimizador de consultas
Los índices bien diseñados pueden reducir las operaciones de E/S de disco y consumir menos recursos del sistema, lo que mejora el rendimiento de las consultas. Los índices pueden ser útiles para una variedad de consultas que contienen instrucciones SELECT, UPDATE, DELETE o MERGE. Considere la consulta SELECT Title, HireDate FROM HumanResources.Employee WHERE EmployeeID = 250 en la base de datos AdventureWorks2012 . Cuando se ejecuta esta consulta, el optimizador de consultas evalúa cada método disponible para recuperar los datos y selecciona el método más eficaz. El método puede ser un examen de tabla o puede estar examinando uno o varios índices si existen.
Al realizar un examen de tabla, el optimizador de consultas lee todas las filas de la tabla y extrae las filas que cumplen los criterios de la consulta. Un examen de tabla genera muchas operaciones de E/S de disco y puede consumir muchos recursos. Sin embargo, un examen de tabla podría ser el método más eficaz si, por ejemplo, el conjunto de resultados de la consulta es un alto porcentaje de filas de la tabla.
Cuando el optimizador de consultas usa un índice, busca las columnas de clave de índice, busca la ubicación de almacenamiento de las filas necesarias para la consulta y extrae las filas coincidentes de esa ubicación. Por lo general, la búsqueda del índice es mucho más rápida que buscar en la tabla porque, a diferencia de una tabla, un índice suele contener muy pocas columnas por fila y las filas están ordenadas.
Normalmente, el optimizador de consultas selecciona el método más eficaz al ejecutar consultas. Sin embargo, si no hay índices disponibles, el optimizador de consultas debe usar un examen de tabla. La tarea consiste en diseñar y crear índices que se adapten mejor a su entorno para que el optimizador de consultas tenga una selección de índices eficaces desde los que seleccionar. SQL Server proporciona el Asistente para la optimización de motor de base de datos para ayudar con el análisis del entorno de base de datos y en la selección de índices adecuados.