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.
En este tema se describe cómo agregar columnas incluidas (o no clave) para ampliar la funcionalidad de los índices no clúster en SQL Server 2014 mediante SQL Server Management Studio o Transact-SQL. Al incluir columnas sin clave, puede crear índices no clúster que abarcan más consultas. Esto se debe a que las columnas sin clave tienen las siguientes ventajas:
Pueden ser tipos de datos que no están permitidos como columnas de clave de índice.
El motor de base de datos no los tiene en cuenta cuando calcula el número de columnas de clave de índice o el tamaño de las claves de índice.
Un índice con columnas sin clave puede mejorar significativamente el rendimiento de las consultas cuando todas las columnas de la consulta se incluyen en el índice como columnas clave o no clave. Las mejoras en el rendimiento se consiguen porque el optimizador de consultas puede localizar todos los valores de las columnas del índice, sin tener acceso a los datos de la tabla o del índice clúster, lo que da como resultado menos operaciones de E/S de disco.
Nota:
Cuando un índice contiene todas las columnas a las que hace referencia una consulta, normalmente se conoce como cobertura de la consulta.
En este tema
Antes de comenzar:
Para crear un índice con columnas que no son clave, use:
Antes de empezar
Recomendaciones de diseño
Rediseñe índices no clúster con un tamaño de las claves de índice grande para que solo las columnas utilizadas para búsquedas sean columnas de clave. Convierta todas las demás columnas que cubren la consulta en columnas no clave. De esta forma, tendrá todas las columnas necesarias para abarcar la consulta pero la clave de índice en sí será pequeña y eficaz.
Incluya columnas no clave en un índice no clúster para evitar superar las limitaciones de tamaño de índice actuales de un máximo de 16 columnas de clave y un tamaño máximo de clave de índice de 900 bytes. El motor de base de datos no tiene en cuenta las columnas sin clave al calcular el número de columnas de clave de índice o el tamaño de las claves de índice.
Limitaciones y restricciones
Las columnas no clave solo se pueden definir en índices no agrupados.
Todos los tipos de datos excepto
text
,ntext
yimage
se pueden usar como columnas que no son clave.Las columnas calculadas que son deterministas y precisas o imprecisas pueden ser columnas no clave. Para obtener más información, vea Indexes on Computed Columns.
Las columnas calculadas derivadas de los tipos de datos
image
,ntext
ytext
pueden ser columnas no clave siempre que el tipo de datos de la columna calculada se permita como columna de índice no clave.Las columnas no clave no se pueden quitar de una tabla a menos que el índice de la tabla se quite primero.
Las columnas sin clave no se pueden cambiar, excepto para hacer lo siguiente:
Cambiar la nulabilidad de NOT NULL a NULL.
Aumentar la longitud de las columnas
varchar
,nvarchar
ovarbinary
.
Seguridad
Permisos
Requiere el permiso ALTER en la tabla o vista. El usuario debe ser miembro del rol fijo de servidor sysadmin o de los roles fijos de base de datos db_ddladmin y db_owner.
Uso de SQL Server Management Studio
Para crear un índice con columnas sin clave
En el Explorador de objetos, haga clic en el signo más para expandir la base de datos que contiene la tabla en la que desea crear un índice con columnas sin clave.
Haga clic en el signo más para expandir la carpeta Tablas .
Haga clic en el signo más para expandir la tabla en la que desea crear un índice con columnas que no son clave.
Haga clic con el botón derecho en la carpeta Índices , seleccione Nuevo índice y seleccione Índice no agrupado....
En el cuadro de diálogo Nuevo índice , en la página General , escriba el nombre del nuevo índice en el cuadro Nombre del índice.
En la pestaña Columnas de clave de índice , haga clic en Agregar....
En el cuadro de diálogo Seleccionar columnas detable_name , active la casilla o las casillas de la columna o columnas de la tabla que se van a agregar al índice.
Haz clic en Aceptar.
En la pestaña Columnas incluidas , haga clic en Agregar....
En el cuadro de diálogo Seleccionar columnas detable_name, active la casilla o casillas de la columna o columnas de tabla que se van a agregar al índice como columnas no claves.
Haz clic en Aceptar.
En el cuadro de diálogo Nuevo índice , haga clic en Aceptar.
Uso de Transact-SQL
Para crear un índice con columnas sin clave
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.
En la barra de Estándar, haga clic en Nueva consulta.
Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.
USE AdventureWorks2012; GO -- Creates a nonclustered index on the Person.Address table with four included (nonkey) columns. -- index key column is PostalCode and the nonkey columns are -- AddressLine1, AddressLine2, City, and StateProvinceID. CREATE NONCLUSTERED INDEX IX_Address_PostalCode ON Person.Address (PostalCode) INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID); GO
Para más información, consulte CREATE INDEX (Transact-SQL).