sys.index_columns (Transact-SQL)
Contiene una fila por cada columna que forma parte de un índice de sys.indexes o una tabla no ordenada (montón).
Se aplica a: SQL Server (SQL Server 2008 a versión actual), Windows Azure SQL Database (Versión inicial a versión actual). |
Nombre de columna |
Tipo de datos |
Descripción |
---|---|---|
object_id |
int |
Id. del objeto en el que se define el índice. |
index_id |
int |
Id. del índice en el que se define la columna. |
index_column_id |
int |
Id. de la columna de índice. index_column_id es único solo en index_id. |
column_id |
int |
Id. de la columna en object_id. 0 = Identificador de fila (RID) en un índice no clúster. column_id es único en object_id solamente. |
key_ordinal |
tinyint |
Ordinal (de base 1) en el conjunto de columnas de clave. 0 = No es una columna de clave; es un índice XML, un índice de almacén de columnas o un índice espacial. Nota Un índice XML o un índice espacial no pueden ser una clave porque las columnas subyacentes no son comparables, lo que significa que sus valores no pueden ordenarse. |
partition_ordinal |
tinyint |
Ordinal (de base 1) en el conjunto de columnas de partición. Un índice de almacén de columnas en clúster puede tener como máximo 1 columna de particionamiento. 0 = No es una columna de partición. |
is_descending_key |
bit |
1 = El orden de la columna de clave de índice es descendente. 0 = La columna de clave de índice tiene una dirección de orden ascendente, o bien la columna es parte de un índice de almacén de columnas o hash. |
is_included_column |
bit |
1 = La columna es una columna sin clave que se agrega al índice utilizando la cláusula CREATE INDEX INCLUDE, o bien la columna forma parte de un índice de almacén de columnas. 0 = La columna no es una columna incluida. Las columnas agregadas implícitamente porque forman parte de la clave de agrupación en clústeres no se incluyen en sys.index_columns. Las columnas agregadas implícitamente porque son una columna de partición se devuelven como 0. |
Permisos
La visibilidad de los metadatos en las vistas de catálogo se limita a los elementos protegibles y que son propiedad de un usuario o sobre los que el usuario tiene algún permiso. Para obtener más información, vea Configuración de visibilidad de los metadatos.
Ejemplos
En el ejemplo siguiente se devuelven todos los índices y columnas de índice para la tabla Production.BillOfMaterials.
USE AdventureWorks2012;
GO
SELECT i.name AS index_name
,COL_NAME(ic.object_id,ic.column_id) AS column_name
,ic.index_column_id
,ic.key_ordinal
,ic.is_included_column
FROM sys.indexes AS i
INNER JOIN sys.index_columns AS ic
ON i.object_id = ic.object_id AND i.index_id = ic.index_id
WHERE i.object_id = OBJECT_ID('Production.BillOfMaterials');
El conjunto de resultados es el siguiente.
index_name column_name index_column_id key_ordinal is_included_column
---------------------------------------------------------- ----------------- --------------- ----------- -------------
AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate ProductAssemblyID 1 1 0
AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate ComponentID 2 2 0
AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate StartDate 3 3 0
PK_BillOfMaterials_BillOfMaterialsID BillOfMaterialsID 1 1 0
IX_BillOfMaterials_UnitMeasureCode UnitMeasureCode 1 1 0
(5 row(s) affected)
Vea también
Referencia
Vistas de catálogo de objetos (Transact-SQL)
Vistas de catálogo (Transact-SQL)
Conceptos
Consultar las preguntas más frecuentes (P+F) del catálogo del sistema de SQL Server