sys.indexes (Transact-SQL)

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

適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで)、Windows Azure SQL データベース (初回のリリースから現在のバージョンまで)

列名

データ型

説明

object_id

int

インデックスが属しているオブジェクトの ID。

name

sysname

インデックスの名前。 name は、オブジェクト内でのみ一意です。

NULL = ヒープ

index_id

int

インデックスの ID。 index_id は、オブジェクト内でのみ一意です。

0 = ヒープ

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

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

tinyint

インデックスの種類です。

0 = ヒープ

1 = クラスター化

2 = 非クラスター化

3 = XML

4 = 空間

5 = クラスター化列ストア インデックス

6 = 非クラスター化列ストア インデックス

7 = 非クラスター化ハッシュ インデックス

type_desc

nvarchar(60)

インデックスの種類の説明。

HEAP

CLUSTERED

NONCLUSTERED

XML

SPATIAL

CLUSTERED COLUMNSTORE

適用対象: SQL Server 2014 から SQL Server 2014。

NONCLUSTERED COLUMNSTORE

適用対象: SQL Server 2012 から SQL Server 2014。

NONCLUSTERED HASH

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

適用対象: SQL Server 2014 から SQL Server 2014。

is_unique

bit

1 = インデックスは一意です。

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

クラスター化列ストア インデックスの場合、常に 0 です。

data_space_id

int

インデックスのデータ領域の ID。 データ領域は、ファイル グループまたはパーティション構成です。

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

ignore_dup_key

bit

1 = IGNORE_DUP_KEY はオンです。

0 = IGNORE_DUP_KEY はオフです。

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 がオンです。

0 = PADINDEX がオフです。

クラスター化列ストア インデックスの場合、常に 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 です。

権限

カタログ ビューでのメタデータの表示が、ユーザーが所有しているかそのユーザーが権限を許可されている、セキュリティ保護可能なメタデータに制限されます。 詳細については、「メタデータ表示の構成」を参照してください。

次の例は、AdventureWorks2012 データベース内の 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 (インメモリ最適化)