sys.index_columns (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics 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 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 ha recibido algún permiso. 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');
Este es el conjunto de resultados.
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)