sys.index_columns (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Base de données SQL dans Microsoft Fabric

Contient une ligne par colonne qui fait partie d’un index ou d’une table non ordonnée (tas).

Nom de la colonne Type de données Description
object_id int ID de l'objet pour lequel l'index est défini.
index_id int Identificateur de l'index où la colonne est définie.
index_column_id int Identificateur de l'index de colonne. index_column_id est unique uniquement dans index_id.
column_id int ID de la colonne dans object_id.

0 = Identificateur de ligne (RID) dans un index non cluster.

column_id est unique uniquement dans object_id.
key_ordinal tinyint Valeur ordinale (basée sur la valeur 1) dans l'ensemble de colonnes clés.

0 = N'est pas une colonne clé, ou est un index XML, un index columnstore ou un index spatial.

Remarque : Un index XML ou spatial ne peut pas être une clé, car les colonnes sous-jacentes ne sont pas comparables, ce qui signifie que leurs valeurs ne peuvent pas être ordonnées.
partition_ordinal tinyint Valeur ordinale (basée sur la valeur 1) dans l'ensemble de colonnes de partitionnement. Un index columnstore cluster peut avoir au plus une colonne de partitionnement.

0 = N'est pas une colonne de partitionnement.
is_descending_key bit 1 = La colonne de clé d’index a une direction de tri décroissante.

0 = La colonne de clé d’index a une direction de tri croissant, ou la colonne fait partie d’un index columnstore ou de hachage.
is_included_column bit 1 = Colonne est une colonne non clé ajoutée à l’index à l’aide de la clause CREATE INDEX INCLUDE, ou la colonne fait partie d’un index columnstore.

0 = Colonne n’est pas une colonne incluse.

Les colonnes implicitement ajoutées, car elles font partie de la clé de clustering ne sont pas répertoriées dans sys.index_columns.

Les colonnes implicitement ajoutées, car elles sont une colonne de partitionnement sont retournées en tant que 0.
column_store_order_ordinal tinyint S’applique à : Azure Synapse Analytics et SQL Server 2022 (16.x)
Ordinal (basé sur 1) dans un ensemble de colonnes d’ordre dans un index columnstore cluster ordonné. Pour plus d’informations sur les index columnstore en cluster ordonnés, consultez les instructions de conception des index Columnstore.

autorisations

La visibilité des métadonnées dans les affichages catalogue est limitée aux éléments sécurisables qu'un utilisateur détient ou pour lesquels des autorisations lui ont été accordées. Pour plus d'informations, consultez Metadata Visibility Configuration.

Exemples

L'exemple suivant retourne tous les index et les colonnes d'index de la table 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');

Voici le jeu de résultats.

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)

Étapes suivantes