sys.index_columns (Transact-SQL)

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

Aplica-se a: SQL Server (SQL Server 2008 até a versão atual), Banco de dados SQL do Windows Azure (versão inicial até a versão atual).

Nome da coluna

Tipo de dados

Descrição

object_id

int

ID do objeto em que o índice está 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 é exclusivo somente dentro de index_id.

column_id

int

ID da coluna em object_id.

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

column_id só é exclusivo dentro de object_id.

key_ordinal

tinyint

Ordinal (com base em 1) dentro do conjunto de colunas chave.

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

Dica

Um índice XML ou espacial 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 (com base 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 do índice tem uma classificação decrescente.

0 = A coluna de chave do índice tem uma classificação crescente, ou a coluna faz parte de um índice de hash.

is_included_column

bit

1 = A coluna é uma coluna não chave adicionada ao índice através da cláusula CREATE INDEX INCLUDE, ou a coluna faz parte de um índice columnstore.

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

Colunas adicionadas implicitamente porque fazem parte da chave de clustering não são listadas em sys.index_columns.

Colunas adicionadas implicitamente porque são uma coluna de particionamento são retornadas como 0.

Permissões

A visibilidade dos metadados em exibições do catálogo está limitada aos protegíveis que pertencem a um usuário ou para os quais o usuário recebeu permissão. Para obter mais informações, consulte Configuração de visibilidade de metadados.

Exemplos

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

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)

Consulte também

Referência

Exibições do catálogo de objeto (Transact-SQL)

Exibições de catálogo (Transact-SQL)

sys.indexes (Transact-SQL)

sys.objects (Transact-SQL)

CREATE INDEX (Transact-SQL)

sys.columns (Transact-SQL)

Conceitos

Consultando as perguntas frequentes do catálogo do sistema do SQL Server