sys.index_columns (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
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 obtenu.
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)