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)
Conceitos
Consultando as perguntas frequentes do catálogo do sistema do SQL Server