sys.index_columns (Transact-SQL)
Содержит одну строку для каждого столбца, являющегося частью индекса sys.indexes или неупорядоченной таблицы (кучи).
Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск). |
Имя столбца |
Тип данных |
Описание |
---|---|---|
object_id |
int |
Идентификатор объекта, с которым ассоциирован индекс. |
index_id |
int |
Идентификатор индекса, в котором определен столбец. |
index_column_id |
int |
Идентификатор столбца индекса. index_column_id является уникальным только внутри index_id. |
column_id |
int |
Идентификатор столбца в object_id. 0 = Идентификатор строки (RID) в некластеризованном индексе. Идентификатор column_id является уникальным только применительно к идентификатору object_id. |
key_ordinal |
tinyint |
Порядковый номер (нумерация начинается с 1) внутри набора ключевых столбцов. 0 = неключевой столбец или XML-индекс, индекс columnstore или пространственный индекс. Примечание XML-индекс или пространственный индекс не может быть ключевым, так как основополагающие столбцы не поддерживают сравнения, а это значит, что их значения нельзя упорядочить. |
partition_ordinal |
tinyint |
Порядковый номер (нумерация начинается с 1) внутри набора столбцов секционирования. Кластеризованный индекс columnstore может иметь самое большее 1 столбец секционирования. 0 = Объект не является столбцом секционирования. |
is_descending_key |
bit |
1 = Направление сортировки ключевого столбца индексов по убыванию. 0 = ключевой столбец индекса имеет направление сортировки по возрастанию, или столбец входит в состав индекса columnstore или хэш-индекса. |
is_included_column |
bit |
1 = столбец является неключевым столбцом, добавленным к индексу с использованием предложения CREATE INDEX INCLUDE, или столбец входит в состав индекса columnstore. 0 = Столбец не является включенным. Столбцы, добавленные неявно, поскольку они являются частью ключа кластеризации, не перечислены в sys.index_columns. Столбцы, добавленные неявно, поскольку они представляют собой столбец секционирования, возвращаются как 0. |
Разрешения
Видимость метаданных в представлениях каталогов ограничивается защищаемыми объектами, которыми пользователь владеет или на которые ему были предоставлены разрешения. Дополнительные сведения см. в разделе Настройка видимости метаданных.
Примеры.
В следующем примере возвращаются все индексы и индексированные столбцы для таблицы 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');
Ниже приводится результирующий набор.
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)
См. также
Справочник
Представления каталога объектов (Transact-SQL)
Представления каталога (Transact-SQL)
Основные понятия
Часто задаваемые вопросы о запросах к системному каталогу сервера SQL Server