Partilhar via


sys.index_columns (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Base de dados SQL no Microsoft Fabric

Contém uma linha por coluna que faz parte de um índice ou tabela não ordenada (heap).

Nome da coluna Tipo de dados Description
object_id int ID do objeto no qual o índice é definido.
index_id int ID do índice no qual a coluna está definida.
index_column_id int ID da coluna de índice. index_column_id é único apenas dentro index_id.
column_id int ID da coluna em object_id.

0 = Identificador de linha (RID) em um índice não clusterizado.

column_id é único apenas dentro object_id.
key_ordinal tinyint Ordinal (baseado em 1) dentro do conjunto de colunas-chave.

0 = Não é uma coluna de chave, ou é um índice XML, índice columnstore, índice espacial ou índice JSON.

Nota: Um índice XML, espacial ou JSON não pode ser uma chave porque as colunas subjacentes não são comparáveis, o que significa que seus valores não podem ser ordenados.
partition_ordinal tinyint Ordinal (baseado em 1) dentro do conjunto de colunas de particionamento. Um índice columnstore clusterizado pode ter no máximo uma coluna de particionamento.

0 = Não é uma coluna de particionamento.
is_descending_key bit 1 = A coluna de chave de índice tem uma direção de classificação decrescente.

0 = A coluna de chave de índice tem uma direção de classificação crescente ou a coluna faz parte de um columnstore ou índice de hash.
is_included_column bit 1 = Coluna é uma coluna não-chave adicionada ao índice usando a cláusula CREATE INDEX INCLUDE ou a coluna faz parte de um índice columnstore.

0 = Coluna não é uma coluna incluída.

As colunas adicionadas implicitamente porque fazem parte da chave de clustering não estão listadas em sys.index_columns.

As colunas adicionadas implicitamente porque são uma coluna de particionamento são retornadas como 0.
column_store_order_ordinal tinyint Aplica-se a: Azure Synapse Analytics, SQL Server 2022 (16.x), Banco de Dados SQL do Azure e Azure SQL Managed InstanceAUTD

Ordinal (baseado em 1) dentro do conjunto de colunas de ordem em um índice columnstore ordenado. Para obter mais informações sobre índices columnstore ordenados, consulte Ajuste de desempenho com índices columnstore ordenados.
data_clustering_ordinal tinyint 0 = Não é um columnstore index & ordinal de agrupamento de dados não se aplica
Aplica-se a: SQL Server 2025 (17.x)

Permissions

A visibilidade dos metadados em exibições de catálogo é limitada aos protegíveis que um usuário possui ou nos quais o usuário recebeu alguma permissão. Para obter mais informações, consulte Configuração de visibilidade de metadados.

Examples

O exemplo a seguir retorna todos os índices e colunas de índice para a tabela 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');

Aqui está o conjunto de resultados.

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)

Próximos passos