sys.indexes (Transact-SQL)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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 - Applies to: 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 (インメモリ最適化)