sys.index_columns (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Contiene una fila por columna que forma parte de un índice o una tabla sin ordenar (montón).

Nombre de la columna Tipo de datos Descripción
object_id int Id. del objeto en el que se define el índice.
id_de_índice 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 dentro de index_id.
column_id int Id. de la columna en object_id.

0 = Identificador de fila (RID) en un índice no agrupado.

column_id es único solo dentro de object_id.
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 espacial no puede ser una clave porque las columnas subyacentes no son comparables, lo que significa que sus valores no se pueden ordenar.
partition_ordinal tinyint Ordinal (de base 1) en el conjunto de columnas de partición. Un índice de almacén de columnas agrupado puede tener como máximo una columna de creación de particiones.

0 = No es una columna de partición.
is_descending_key bit 1 = La columna de clave de índice tiene una dirección de ordenación descendente.

0 = La columna de clave de índice tiene una dirección de ordenación ascendente o la columna forma parte de un índice hash o almacén de columnas.
is_included_column bit 1 = Column es una columna que no es de clave agregada al índice mediante la cláusula CREATE INDEX INCLUDE o 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 aparecen en sys.index_columns.

Las columnas agregadas implícitamente porque son una columna de creación de particiones se devuelven como 0.
column_store_order_ordinal tinyint Se aplica a: Azure Synapse Analytics y SQL Server 2022 (16.x).
Ordinal (basado en 1) dentro del conjunto de columnas de orden en un índice de almacén de columnas agrupado ordenado. Para obtener más información sobre los índices de almacén de columnas agrupados ordenados, consulte Guía de diseño del índice de almacén de columnas.

Permisos

La visibilidad de los metadatos de las vistas de catálogo se limita a elementos protegibles que un usuario posee o en el que se concedió algún permiso al usuario. Para obtener más información, consulte Metadata Visibility Configuration.

Ejemplos

En el ejemplo siguiente se devuelven todos los índices y columnas de índice para la tabla Production.BillOfMaterials.

USE AdventureWorks2022;
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)

Pasos siguientes