Bagikan melalui


sys.index_columns (Transact-SQL)

Berlaku untuk:SQL ServerDatabase Azure SQLInstans Terkelola Azure SQLAzure Synapse AnalyticsSistem Platform Analitik (PDW)Database SQL di Microsoft Fabric

Berisi satu baris per kolom yang merupakan bagian dari indeks atau tabel yang tidak diurutkan (heap).

Nama kolom Jenis data Description
object_id int ID objek tempat indeks didefinisikan.
index_id int ID indeks tempat kolom ditentukan.
index_column_id int ID kolom indeks. index_column_id hanya unik dalam index_id.
column_id int ID kolom di object_id.

0 = Pengidentifikasi Baris (RID) dalam indeks nonclustered.

column_id hanya unik dalam object_id.
key_ordinal tinyint Ordinal (berbasis 1) dalam sekumpulan kolom kunci.

0 = Bukan kolom kunci, atau merupakan indeks XML, indeks penyimpan kolom, indeks spasial, atau indeks JSON.

Catatan: Indeks XML atau spasial atau JSON tidak dapat menjadi kunci karena kolom yang mendasar tidak sebanding, yang berarti bahwa nilainya tidak dapat diurutkan.
partition_ordinal tinyint Ordinal (berbasis 1) dalam kumpulan kolom partisi. Indeks penyimpan kolom berkluster dapat memiliki paling banyak satu kolom partisi.

0 = Bukan kolom pemartisian.
is_descending_key bit 1 = Kolom kunci indeks memiliki arah pengurutan menurun.

0 = Kolom kunci indeks memiliki arah pengurutan naik, atau kolom adalah bagian dari penyimpanan kolom atau indeks hash.
is_included_column bit 1 = Kolom adalah kolom non-kunci yang ditambahkan ke indeks dengan menggunakan klausa CREATE INDEX INCLUDE, atau kolom adalah bagian dari indeks penyimpan kolom.

0 = Kolom bukan kolom yang disertakan.

Kolom ditambahkan secara implisit karena kolom tersebut adalah bagian dari kunci pengklusteran tidak tercantum dalam sys.index_columns.

Kolom ditambahkan secara implisit karena kolom partisi dikembalikan sebagai 0.
column_store_order_ordinal tinyint Berlaku untuk: Azure Synapse Analytics, SQL Server 2022 (16.x), Azure SQL Database, dan Azure SQL Managed InstanceAUTD

Ordinal (berbasis 1) dalam sekumpulan kolom pesanan dalam indeks penyimpan kolom yang diurutkan. Untuk informasi selengkapnya tentang indeks penyimpan kolom yang diurutkan, lihat penyetelan Performa dengan indeks penyimpan kolom yang diurutkan.
data_clustering_ordinal tinyint 0 = Bukan indeks penyimpan kolom & pengklusteran data ordinal tidak berlaku
Berlaku untuk: SQL Server 2025 (17.x)

Permissions

Visibilitas metadata dalam tampilan katalog terbatas pada keamanan yang dimiliki pengguna, atau di mana pengguna diberikan beberapa izin. Untuk informasi selengkapnya, lihat Konfigurasi Visibilitas Metadata.

Examples

Contoh berikut mengembalikan semua indeks dan kolom indeks untuk tabel 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');

Berikut set hasilnya.

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)

Langkah selanjutnya