sys.indexes (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

テーブル、ビュー、テーブル値関数など、テーブル オブジェクトのインデックスまたはヒープごとに 1 行のデータを格納します。

列名 データ型 説明
object_id int このインデックスが属するオブジェクトの ID。
name sysname インデックス名。 name はオブジェクト内でのみ一意です。

NULL = ヒープ
index_id int インデックスの ID。 index_id はオブジェクト内でのみ一意です。

0 = ヒープ

1 = クラスター化インデックス

> 1 = 非クラスター化インデックス
type tinyint インデックスの種類:

0 = ヒープ

1 = クラスター化された行ストア (B ツリー)

2 = 非クラスター化行ストア (B ツリー)

3 = XML

4 = 空間

5 = クラスター化列ストア インデックス。 適用対象: SQL Server 2014 (12.x) 以降。

6 = 非クラスター化列ストア インデックス。 適用対象: SQL Server 2012 (11.x) 以降。

7 = 非クラスター化ハッシュ インデックス。 適用対象: SQL Server 2014 (12.x) 以降。
type_desc nvarchar(60) インデックスの種類の説明:

ヒープ

CLUSTERED

NONCLUSTERED

XML

空間

CLUSTERED COLUMNSTORE - 適用対象: SQL Server 2014 (12.x) 以降。

NONCLUSTERED COLUMNSTORE - 適用対象: SQL Server 2012 (11.x) 以降。

NONCLUSTERED HASH: NONCLUSTERED HASH インデックスは、メモリ最適化テーブルでのみサポートされます。 ビューには sys.hash_indexes 、現在のハッシュ インデックスとハッシュ プロパティが表示されます。 詳細については、「 sys.hash_indexes (Transact-SQL)」を参照してください。 適用対象: SQL Server 2014 (12.x) 以降。
is_unique bit 1 = インデックスは一意です。

0 = インデックスは一意ではありません。

クラスター化列ストア インデックスの場合、常に 0 です。
data_space_id int インデックスのデータ領域の ID。 データ領域は、ファイル グループまたはパーティション構成です。

0 = object_id テーブル値関数またはメモリ内インデックスです。
ignore_dup_key bit 1 = IGNORE_DUP_KEYは ON です。

0 = IGNORE_DUP_KEYは OFF です。
is_primary_key bit 1 = インデックスは PRIMARY KEY 制約の一部です。

クラスター化列ストア インデックスの場合、常に 0 です。
is_unique_constraint bit 1 = インデックスは UNIQUE 制約の一部です。

クラスター化列ストア インデックスの場合、常に 0 です。
fill_factor tinyint > 0 = インデックスの作成時または再構築時に使用される FILLFACTOR の割合。

0 = 既定値

クラスター化列ストア インデックスの場合、常に 0 です。
is_padded bit 1 = PADINDEX が ON です。

0 = PADINDEX が OFF です。

クラスター化列ストア インデックスの場合、常に 0 です。
is_disabled bit 1 = インデックスが無効です。

0 = インデックスは無効ではありません。
is_hypothetical bit 1 = インデックスは仮想的であり、データへのアクセス パスとして直接使用することはできません。 仮想インデックスは、列レベルの統計を保持しています。

0 = インデックスは仮定ではありません。
allow_row_locks bit 1 = インデックスは行ロックを許可します。

0 = インデックスは行ロックを許可しません。

クラスター化列ストア インデックスの場合、常に 0 です。
allow_page_locks bit 1 = インデックスはページ ロックを許可します。

0 = インデックスはページ ロックを許可しません。

クラスター化列ストア インデックスの場合、常に 0 です。
has_filter bit 1 = インデックスにはフィルターがあり、フィルター定義を満たす行のみが含まれます。

0 = インデックスにフィルターがありません。
filter_definition nvarchar(max) フィルター選択されたインデックスに含まれる行のサブセットの式。

ヒープ、フィルター処理されていないインデックス、またはテーブルに対するアクセス許可が不十分な場合は NULL。
compression_delay int > 0 = 列ストア インデックスの圧縮遅延を分単位で指定します。

NULL = 列ストア インデックス行グループの圧縮遅延は自動的に管理されます。
suppress_dup_key_messages bit 1 = インデックス再構築操作中に重複するキー メッセージを抑制するようにインデックスが構成されます。

0 = インデックス再構築操作中に重複するキー メッセージを抑制するようにインデックスが構成されていません。

適用対象: SQL Server (SQL Server 2017 (14.x) 以降)、Azure SQL Database、および Azure SQL Managed Instance
auto_created bit 1 = インデックスは自動チューニングによって作成されました。

0 = ユーザーによってインデックスが作成されました。

適用対象: Azure SQL Database
optimize_for_sequential_key bit 1 = インデックスで最終ページ挿入の最適化が有効になっています。

0 = 既定値。 インデックスの最終ページ挿入の最適化が無効になっています。

適用対象: SQL Server (SQL Server 2019 (15.x) 以降)、Azure SQL Database、および Azure SQL Managed Instance

アクセス許可

カタログ ビューでのメタデータの可視性は、ユーザーが所有しているか、ユーザーに何らかのアクセス許可が付与されたセキュリティ保護可能なリソースに限定されます。 詳細については、「 Metadata Visibility Configuration」を参照してください。

次の例では、AdventureWorks2022 データベース内のテーブル Production.Product のすべてのインデックスを返します。

SELECT i.name AS index_name  
    ,i.type_desc  
    ,is_unique  
    ,ds.type_desc AS filegroup_or_partition_scheme  
    ,ds.name AS filegroup_or_partition_scheme_name  
    ,ignore_dup_key  
    ,is_primary_key  
    ,is_unique_constraint  
    ,fill_factor  
    ,is_padded  
    ,is_disabled  
    ,allow_row_locks  
    ,allow_page_locks  
FROM sys.indexes AS i  
INNER JOIN sys.data_spaces AS ds ON i.data_space_id = ds.data_space_id  
WHERE is_hypothetical = 0 AND i.index_id <> 0   
AND i.object_id = OBJECT_ID('Production.Product');  
GO  

次のステップ

オブジェクト カタログ ビュー (Transact-SQL)
カタログ ビュー (Transact-SQL)
sys.index_columns (Transact-SQL)
sys.xml_indexes (Transact-SQL)
sys.objects (Transact-SQL)
sys.key_constraints (Transact-SQL)
sys.filegroups (Transact-SQL)
sys.partition_schemes (Transact-SQL)
SQL Server システム カタログに対するクエリに関してよく寄せられる質問
インメモリ OLTP (インメモリ最適化)