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)

后续步骤