sys.index_columns (Transact-SQL)
Contiene una riga per ogni colonna che fa parte di un indice sys.indexes o di una tabella non ordinata (heap).
Si applica a: SQL Server (SQL Server 2008 tramite versione corrente), Database SQL di Windows Azure (versione iniziale tramite versione corrente). |
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 è un valore univoco solo nell'ambito di index_id. |
column_id |
int |
ID della colonna in object_id. 0 = Identificatore di riga (RID, Row Identifier) in un indice non cluster. Il valore column_id è univoco solo nell'ambito di object_id. |
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 i relativi valori non possono essere ordinati. |
partition_ordinal |
tinyint |
Numero ordinale (in base 1) nel set di colonne di partizionamento. In un indice columnstore cluster può essere presente al massimo 1 colonna di partizionamento. 0 = La colonna non è una colonna di partizionamento. |
is_descending_key |
bit |
1 = Direzione di ordinamento decrescente per la colonna chiave dell'indice. 0 = La colonna chiave dell'indice presenta una direzione di ordinamento crescente oppure la colonna fa parte di un indice 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é colonne di partizionamento vengono restituite come 0. |
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 ulteriori informazioni, vedere Configurazione della visibilità dei metadati.
Esempi
Nell'esempio seguente vengono restituiti tutti gli indici e le colonne degli indici della tabella 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');
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)
Vedere anche
Riferimento
Viste del catalogo per gli oggetti (Transact-SQL)
Viste del catalogo (Transact-SQL)
Concetti
Domande frequenti sull'esecuzione di query sul catalogo di sistema di SQL Server