次の方法で共有


sys.sysindexes (Transact-SQL)

現在のデータベース内のインデックスとテーブルごとに 1 行のデータを格納します。XML インデックスはこのビューではサポートされません。パーティション テーブルとパーティション インデックスは、このビューでは完全にはサポートされません。代わりに sys.indexes カタログ ビューを使用してください。

重要な注意事項重要

この SQL Server 2000 システム テーブルは、下位互換性を保つためにビューとして含まれています。 代わりに、現在の SQL Server システム ビューを使用することをお勧めします。 対応するシステム ビューを調べるには、「SQL Server 2005 システム ビューへの SQL Server 2000 システム テーブルのマッピング」を参照してください。 この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。 新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。

列名

データ型

説明

id

int

インデックスが属するテーブルの ID。

status

int

システム状態情報。

単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

first

binary(6)

最初のページまたはルート ページへのポインタ。

indid = 0 の場合は使用されません。

NULL = indid > 1 の場合、インデックスがパーティション分割されています。

NULL = indid が 0 または 1 の場合、テーブルがパーティション分割されています。

indid

smallint

インデックスの ID。

0 = ヒープ

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

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

root

binary(6)

indid >= 1 の場合、ルート ページへのポインタ。

indid = 0 の場合は使用されません。

NULL = indid > 1 の場合、インデックスがパーティション分割されています。

NULL = indid が 0 または 1 の場合、テーブルがパーティション分割されています。

minlen

smallint

最小行サイズ。

keycnt

smallint

キーの数。

groupid

smallint

オブジェクトが作成されたファイル グループ ID。

NULL = indid > 1 の場合、インデックスがパーティション分割されています。

NULL = indid が 0 または 1 の場合、テーブルがパーティション分割されています。

dpages

int

indid = 0 または indid = 1 の場合、使用されているデータ ページ数。

indid > 1 の場合、使用されているインデックス ページ数。

0 = indid > 1 の場合、インデックスがパーティション分割されています。

0 = indid が 0 または 1 の場合、テーブルがパーティション分割されています。

行オーバーフローが発生した場合、正確な結果は生成されません。

reserved

int

indid = 0 または indid = 1 の場合、そのテーブルに設定されているすべてのインデックスとテーブル データに割り当てられているページ数。

indid > 1 の場合、インデックスに割り当てられているページ数。

0 = indid > 1 の場合、インデックスがパーティション分割されています。

0 = indid が 0 または 1 の場合、テーブルがパーティション分割されています。

行オーバーフローが発生した場合、正確な結果は生成されません。

used

int

indid = 0 または indid = 1 の場合、すべてのインデックスとテーブル データに使用されている合計ページ数。

indid > 1 の場合、インデックスで使用されているページ数。

0 = indid > 1 の場合、インデックスがパーティション分割されています。

0 = indid が 0 または 1 の場合、テーブルがパーティション分割されています。

行オーバーフローが発生した場合、正確な結果は生成されません。

rowcnt

bigint

indid = 0 および indid = 1 に基づくデータ レベルの行数。

0 = indid > 1 の場合、インデックスがパーティション分割されています。

0 = indid が 0 または 1 の場合、テーブルがパーティション分割されています。

rowmodctr

int

テーブルの統計情報が前回更新されてから挿入、削除、更新された行の総数。

0 = indid > 1 の場合、インデックスがパーティション分割されています。

0 = indid が 0 または 1 の場合、テーブルがパーティション分割されています。

SQL Server 2005 以降では、rowmodctr は以前のバージョンと完全には互換性がありません。詳細については、「解説」を参照してください。

xmaxlen

smallint

最大行サイズ。

maxirow

smallint

非リーフ インデックス行の最大サイズ。

SQL Server 2005 以降では、maxirow は以前のバージョンと完全には互換性がありません。

OrigFillFactor

tinyint

インデックスを作成するときに使用された、元の FILL FACTOR 値。この値は保持されませんが、インデックスを再作成するとき、使用された FILL FACTOR 値を確認する場合に利用できます。

StatVersion

tinyint

0 を返します。

単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

reserved2

int

0 を返します。

単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

FirstIAM

binary(6)

NULL = インデックスがパーティション分割されています。

単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

impid

smallint

インデックス実装フラグ。

0 を返します。

単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

lockflags

smallint

インデックスのロック粒度を適切に保つために使用します。たとえば、ロック コストを最小限にするには、基本的に読み取り専用の参照テーブルで、テーブル レベルのロックだけを行うように設定します。

pgmodctr

int

0 を返します。

単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

keys

varbinary(816)

インデックス キーを構成する列の列 ID の一覧。

NULL を返します。

インデックス キー列を表示するには、sys.sysindexkeys を使用します。

name

sysname

インデックスまたは統計の名前。indid = 0 の場合、NULL を返します。アプリケーションを変更して、NULL ヒープ名を検索するようにしてください。

statblob

image

統計バイナリ ラージ オブジェクト (BLOB)。

NULL を返します。

maxlen

int

単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

rows

int

indid = 0 および indid = 1 に基づくデータ レベルの行数。indid >1 の場合、値は繰り返されます。

説明

予約済みとして定義されている列は使用しないでください。

以前のバージョンの SQL Server では、各テーブルに text、ntext、または image 型の列が少なくとも 1 つ含まれている場合は、sysindexes の行では indid = 255 になっていました。現在、このインデックス ID は存在しません。テーブルまたはインデックスに 1 つ以上のラージ オブジェクト (LOB) データ型が含まれている場合、そのデータの記憶域を管理するために、パーティションごとに 1 つの LOB_DATA アロケーション ユニットが割り当てられます。詳細については、「テーブルとインデックスの編成」を参照してください。

dpagesreserved、および used では、テーブルまたはインデックスのデータが ROW_OVERFLOW アロケーション ユニット内にある場合、正確なデータは返されません。また、各インデックスのページ数は個別に追跡され、ベース テーブル用に集計されることはありません。ページ数を確認するには、sys.allocation_units または sys.partitions ダイアログ ビューを使用するか、sys.dm_db_partition_stats 動的管理ビューを使用します。

以前のバージョンの SQL Server では、データベース エンジンによって行レベルの変更カウンタが管理されていました。現在、こうしたカウンタは列レベルで管理されます。このため、rowmodctr 列に対しては計算が行われ、以前のバージョンと同様の結果が生成されますが、正確ではありません。

rowmodctr の値を使用して、統計を更新するタイミングを決定する場合は、次の方法を検討してください。

  • 何もしない。新しい rowmodctr 値の動作は、以前のバージョンとほぼ同じであるため、通常は、統計を更新するタイミングの特定に役立ちます。

  • AUTO_UPDATE_STATISTICS を使用する。詳細については、「クエリのパフォーマンスを向上させるための統計の使用」を参照してください。

  • 期限を使用して、統計を更新するタイミングを決定する。たとえば、毎時、毎日、毎週などです。

  • アプリケーション レベルの情報を使用して、統計を更新するタイミングを決定する。たとえば、identity 列の最大値が 10,000 以上に変更されるとき、または一括挿入操作が実行されるときなどを目安にします。