インデックスの種類PostgreSQLでは、B-tree、Hash、GiST、SP-GiST、GIN、BRINといった複数の種類のインデックスを使用可能です。インデックスの各種類は、異なる種類の問い合わせに最も適した、異なるアルゴリズムを使用します。INDEXコマンドは、B-treeインデックスを作成し、それはほとんどの一般的状況に適合します。B-treeインデックスは、ある順番でソート可能なデータに対する等価性や範囲を問い合わせることを扱うことができます。具体的には、PostgreSQLの問い合わせプランナは、インデックスの付いた列を次の演算子を使用して比較する場合に、B-treeインデックスの使用を検討します。<<==>=>また、BETWEENやINなどのこれらの演算子の組み合わせと等価な式をB-treeインデックス検索で実装することができます。NULLでもB-treeインデックスを使用することができます。オプティマイザは、パターンマッチ演算子LIKE、~を含む問い合わせでも、そのパターンが定数であり、先頭文字列を指定している場合B-treeインデックスを使用することができます。'%bar'では使用されません。データベースがCロケールを使用していない場合、パターンマッチ問い合わせのインデックス付けをサポートする特別な演算子クラスでインデックスを作成しなければなりません。演算子クラスと演算子族を参照してください。ILIKEと~*でもB-treeインデックスを使用することができますが、パターンが英字以外の文字、つまり、大文字小文字の違いの影響がない文字で始まる場合のみです。B-treeインデックスをソートされた順序でデータを受けとるために使用することもできます。これは常に単純なスキャンとソート処理より高速になるものではありませんが、よく役に立つことがあります。ハッシュインデックスは単純な等価性比較のみを扱うことができます。問い合わせプランナでは、インデックスの付いた列を=演算子を使用して比較する場合に、ハッシュインデックスの使用を検討します。ハッシュインデックスを作成するには、以下のようなコマンドを使用してください。現在ハッシュインデックス操作はWALに記録されません。そのため、データベースクラッシュの後ハッシュインデックスをREINDEXで再構築しなければならない可能性があります。最初のバックアップを取得して以降、ストリーミングレプリケーションやファイルベースのレプリケーションでは変更が反映されないため、その後ハッシュインデックスを使うクエリは誤った結果を返します。これらの理由により、ハッシュインデックスの使用は現在お勧めできません。GiSTインデックスは単一種類のインデックスではなく、多くの異なるインデックス戦略を実装することができる基盤です。したがって、具体的なGiSTインデックスで使用できる演算子はインデックス戦略(演算子クラス)によって異なります。PostgreSQLの標準配布物には、複数の二次元幾何データ型用のGiST演算子クラスが含まれています。これらの演算子を使用してインデックス付けされた問い合わせをサポートします。幾何関数と演算子を参照してください。標準配布物に含まれるGiST演算子クラスは表59.1「組込みGiST演算子クラス」に記載されています。他の多くのGiST演算子クラスがcontrib群や別のプロジェクトとして利用可能です。詳細は59章GiSTインデックスを参照してください。GiSTインデックスは以下のような「最近傍」検索を最適化する機能も持ちます。10;これは指定された対象地点に最も近い10箇所を見つけ出します。繰り返しますが、これができるかどうかは使用される特定の演算子クラスに依存します。Operators」列に表示されています。SP-GiSTインデックスは、GiSTインデックスと同様に様々な種類の検索を支援する基盤を提供します。SP-GiSTインデックスは広域な異なる不均衡でディスクベースのデータ構造、つまり、四分木,kd木、基数木のような実装を認めます。PostgreSQL標準配布物には、以下の演算子を使用する問い合わせに対するインデックスをサポートする2次元の点用のSP-GiST用の演算子クラスが含まれています。標準配布物に含まれるSP-GiSTクラスは表60.1「組込みSP-GiST演算子クラス」に記載されています。60章SP-GiSTインデックスを参照してください。GINは転置インデックスであり、例えば配列など複数のキーを持つ値を扱うことができます。GiSTやSP-GiST同様、GINも多くの異なるユーザ定義のインデックス戦略を持つことができ、GINが使用できる具体的な演算子はインデックス戦略によって変化します。PostgreSQL標準配布物には、1次元配列用のGIN演算子クラスが含まれています。これは、以下の演算子を使用する問い合わせに対するインデックスをサポートします。配列関数と演算子を参照してください。標準配布物に含まれるGIN演算子クラスは表61.1「組込みGIN演算子クラス」に記載されています。他の多くのGIN演算子クラスはcontrib群または別のプロジェクトで利用可能です。詳細は61章GINインデックスを参照してください。GiST、SP-GiST、GINと同じように、BRINは多くの異なるインデックス戦略をサポートし、BRINインデックスが使用できる具体的な演算子はインデックス戦略によって変化します。線形のソート順を持つデータ型では、インデックス付けされたデータは各ブロックレンジの列の中の値の最小値と最大値に対応しており、以下の演算子を使用したインデックス付けされた問い合わせをサポートします。<<==>=>標準配布物に含まれるBRIN演算子クラスは表62.1「組込みBRIN演算子クラス」.に記載されています。詳細は62章BRINインデックスを参照してください。