pg_index
pg_index
カタログはインデックス情報の一部を保持します。
その他のほとんどの情報はpg_class
にあります。
表49.26 pg_index
の列
名前 | 型 | 参照先 | 説明 |
---|---|---|---|
indexrelid | oid |
| このインデックスに対するpg_class 項目のOID |
indrelid | oid |
| このインデックスが使われるテーブルに対するpg_class 項目のOID |
indnatts | int2 | インデックス内の列数(pg_class.relnatts の複製) | |
indisunique | bool | 真の場合は一意性インデックス | |
indisprimary | bool | 真の場合このインデックスはテーブルの主キーを表します
(この値が真の時indisunique は常に真でなければなりません)。
| |
indisexclusion | bool | 真の場合、このインデックスは排他制約をサポートします。 | |
indimmediate | bool | 真の場合、一意性検査が挿入時即座に強制されます。
(indisunique が真でなければ無関係です。)
| |
indisclustered | bool | 真の場合、前回このインデックスを元にテーブルはクラスタ化されました。 | |
indisvalid | bool | 真の場合、現在このインデックスは問い合わせに対して有効です。
偽は、インデックスが不完全かもしれないことを意味します。
INSERT /UPDATE 操作による変更が行われているはずで、問い合わせに使用するには安全ではありません。
一意性インデックスであれば、一意性も保証されません。
| |
indcheckxmin | bool | 真の場合、pg_index 行のxmin がTransactionXmin イベント境界値を下回るまで、問い合わせはインデックスを使用してはいけません。
なぜなら、テーブルは互換性の無い行と共に破壊されたHOTチェインを含み、それらが可視であるかもしれないからです。
| |
indisready | bool | 真の場合、インデックスは挿入に対する準備ができています。
偽の場合はインデックスはINSERT /UPDATE 操作により無視されなければならないことを意味します。
| |
indislive | bool | 偽の場合、インデックスの削除処理が進行中であり、このためすべての目的において(HOT安全性の決定を含む)無視しなければなりません。 | |
indisreplident | bool | 真の場合、このインデックスはALTER TABLE ... REPLICA IDENTITY USING INDEX ... を用いて「replica identity」が選択されます。
| |
indkey | int2vector |
| このインデックスがどのテーブル列をインデックスとしているかを示すindnatts 配列の値です。
例えば、1 3 は1番目と3番目のテーブル列がインデックスキーとなっていることを示します。
この配列でゼロとなっているのは対応するインデックスの属性が単純な列参照ではなくテーブル列に渡った演算式であることを示します。
|
indcollation | oidvector |
| インデックスキー内の各列に関してここにはインデックスで使用される照合順序のOIDが含まれます。 |
indclass | oidvector |
| インデックスキー内のそれぞれの列に対して、使用する演算子クラスのOIDを保持します。
pg_opclass を参照してください。
|
indoption | int2vector | 列毎のフラグビットを格納するindnatts 値の配列です。
ビットの意味はインデックスのアクセスメソッドによって定義されています。
| |
indexprs | pg_node_tree | 単純な列参照でないインデックス属性の(nodeToString() 表現による)演算式ツリー。
単純な参照の場合はインデックス属性はすべてNULL。
| |
indpred | pg_node_tree | 部分インデックス属性の(nodeToString() 表現による)演算式ツリー。
部分インデックスでなければNULL。
|