Compartir a través de


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)

sys.indexes (Transact-SQL)

sys.objects (Transact-SQL)

CREATE INDEX (Transact-SQL)

sys.columns (Transact-SQL)

Conceptos

Consultar las preguntas más frecuentes (P+F) del catálogo del sistema de SQL Server