sys.index_columns (Transact-SQL)
Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure database SQL di Azure Synapse Analytics Platform System (PDW) in Microsoft Fabric
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_id di . |
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_id di . |
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 l'utente è proprietario o per le quali dispone di 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');
Il set di risultati è il seguente.
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)