sys.index_columns (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di sistemi analitici (PDW)

Contiene una riga per colonna che fa parte di un indice o di una tabella non ordinata (heap).

Nome colonna Tipo di dati Descrizione
object_id int ID dell'oggetto su cui è definito l'indice.
index_id int ID dell'indice nel quale è stata definita la colonna.
index_column_id int ID della colonna dell'indice. index_column_id è univoco solo all'interno index_iddi .
column_id int ID della colonna in object_id.

0 = Identificatore di riga (RID) in un indice non cluster.

column_id è univoco solo all'interno object_iddi .
key_ordinal tinyint Numero ordinale (in base 1) nel set di colonne chiave.

0 = la colonna non è una colonna chiave oppure è un indice XML, un indice columnstore o un indice spaziale.

Nota: un indice XML o spaziale non può essere una chiave perché le colonne sottostanti non sono confrontabili, ovvero non è possibile ordinare i relativi valori.
partition_ordinal tinyint Numero ordinale (in base 1) nel set di colonne di partizionamento. Un indice columnstore cluster può avere al massimo una colonna di partizionamento.

0 = La colonna non è una colonna di partizionamento.
is_descending_key bit 1 = La colonna chiave di indice ha una direzione di ordinamento decrescente.

0 = La colonna chiave di indice ha una direzione di ordinamento crescente oppure la colonna fa parte di un indice columnstore o hash.
is_included_column bit 1 = La colonna è una colonna non chiave aggiunta all'indice tramite la clausola CREATE INDEX INCLUDE oppure la colonna fa parte di un indice columnstore.

0 = La colonna non è una colonna inclusa.

Le colonne aggiunte in modo implicito perché fanno parte della chiave di clustering non sono elencate in sys.index_columns.

Le colonne aggiunte in modo implicito perché sono una colonna di partizionamento vengono restituite come 0.
column_store_order_ordinal tinyint Si applica a: Azure Synapse Analytics e SQL Server 2022 (16.x)
Ordinale (in base 1) all'interno di un set di colonne di ordine in un indice columnstore cluster ordinato. Per altre informazioni sugli indici columnstore cluster ordinati, vedere Linee guida per la progettazione degli indici columnstore.

Autorizzazioni

La visibilità dei metadati nelle viste del catalogo è limitata alle entità a protezione diretta di cui un utente è proprietario o a cui l'utente ha concesso alcune autorizzazioni. Per altre informazioni, vedere Metadata Visibility Configuration.

Esempi

Nell'esempio seguente vengono restituiti tutti gli indici e le colonne degli indici della tabella 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');

Questo è il set di risultati.

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)

Passaggi successivi