sys.index_columns (Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)
每个列包含一行,该行是索引表或无序表(堆)的一部分。
列名称 | 数据类型 | 说明 |
---|---|---|
object_id | int | 索引所定义的对象的 ID。 |
index_id | int | 定义了列的索引的 ID。 |
index_column_id | int | 索引列的 ID。 index_column_id 仅在 . 中 index_id 是唯一的。 |
column_id | int | 中 object_id 列的 ID。0 = 非聚集索引中的行标识符 (RID)。column_id 仅在 . 中 object_id 是唯一的。 |
key_ordinal | tinyint | 键列集内的序数(从 1 开始)。 0 = 不是键列,或者是 XML 索引、列存储索引或空间索引。 注意:XML 或空间索引不能是键,因为基础列不可比较,这意味着无法对它们的值进行排序。 |
partition_ordinal | tinyint | 分区列集内的序数(从 1 开始)。 聚集列存储索引最多可以有一个分区列。 0 = 非分区列。 |
is_descending_key | bit | 1 = 索引键列具有降序排序方向。0 = 索引键列具有升序排序方向,或者列是列存储或哈希索引的一部分。 |
is_included_column | bit | 1 = 列是使用 CREATE INDEX INCLUDE 子句添加到索引的非键列,或者该列是列存储索引的一部分。0 = 列不是包含的列。隐式添加列,因为它们是聚类分析键的一部分,因此未列列。 sys.index_columns 隐式添加的列,因为它们是分区列,返回为 0 。 |
column_store_order_ordinal | tinyint | 适用于:Azure Synapse Analytics 和 SQL Server 2022 (16.x) 有序聚集列存储索引中一组顺序列内的序号(基于 1)。 有关有序聚集列存储索引的详细信息,请参阅 列存储索引设计指南。 |
权限
目录视图中仅显示用户拥有的安全对象的元数据,或用户对其拥有某些权限的安全对象的元数据。 有关详细信息,请参阅 Metadata Visibility Configuration。
示例
下例返回表 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');
结果集如下。
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)