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 アロケーション ユニットが割り当てられます。詳細については、「テーブルとインデックスの編成」を参照してください。
列 dpages、reserved、および used では、テーブルまたはインデックスのデータが ROW_OVERFLOW アロケーション ユニット内にある場合、正確なデータは返されません。また、各インデックスのページ数は個別に追跡され、ベース テーブル用に集計されることはありません。ページ数を確認するには、sys.allocation_units または sys.partitions ダイアログ ビューを使用するか、sys.dm_db_partition_stats 動的管理ビューを使用します。
以前のバージョンの SQL Server では、データベース エンジンによって行レベルの変更カウンタが管理されていました。現在、こうしたカウンタは列レベルで管理されます。このため、rowmodctr 列に対しては計算が行われ、以前のバージョンと同様の結果が生成されますが、正確ではありません。
rowmodctr の値を使用して、統計を更新するタイミングを決定する場合は、次の方法を検討してください。
何もしない。新しい rowmodctr 値の動作は、以前のバージョンとほぼ同じであるため、通常は、統計を更新するタイミングの特定に役立ちます。
AUTO_UPDATE_STATISTICS を使用する。詳細については、「クエリのパフォーマンスを向上させるための統計の使用」を参照してください。
期限を使用して、統計を更新するタイミングを決定する。たとえば、毎時、毎日、毎週などです。
アプリケーション レベルの情報を使用して、統計を更新するタイミングを決定する。たとえば、identity 列の最大値が 10,000 以上に変更されるとき、または一括挿入操作が実行されるときなどを目安にします。