Condividi tramite


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)

sys.indexes (Transact-SQL)

sys.objects (Transact-SQL)

CREATE INDEX (Transact-SQL)

sys.columns (Transact-SQL)

Concetti

Domande frequenti sull'esecuzione di query sul catalogo di sistema di SQL Server