sys.index_columns (Transact-SQL)
在 sys.indexes 索引或未排序的資料表 (堆積) 中,每個資料行各有一個資料列。
適用於:SQL Server (SQL Server 2008 透過目前版本)、Windows Azure SQL 資料庫 (初始版本,透過目前版本)。 |
資料行名稱 |
資料類型 |
描述 |
---|---|---|
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 索引、資料行存放區索引或空間索引。 注意 XML 或空間索引不得為索引鍵,因為基礎資料行無法比較,也就是說無法排序它們的值。 |
partition_ordinal |
tinyint |
分割區資料行組中的序數 (以 1 為基底)。 叢集資料行存放區索引最多可以有 1 個分割區資料行。 0 = 不是分割區資料行。 |
is_descending_key |
bit |
1 = 索引鍵資料行是以遞減方式排序。 0 = 索引鍵資料行是以遞增方式排序,或者資料行是資料行存放區索引或雜湊索引的一部分。 |
is_included_column |
bit |
1 = 資料行是利用 CREATE INDEX INCLUDE 子句加入索引中的非索引鍵資料行,或者資料行是資料行存放區索引的一部分。 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)