postgresqlインデックスタイプ


PostgreSQLでは、異なるアルゴリズムを使用しているため、各インデックス・タイプに適切なクエリー・タイプがあります.デフォルトでは、CREATE INDEXコマンドによってB-Treeインデックスが作成されます.
B-Treeインデックス
B-Treeインデックスは主に等和範囲クエリーに使用されます.特に、インデックス列にオペレータ"=および>"がクエリー条件として含まれている場合、PostgreSQLのクエリー・プランナでは、B-Treeインデックスの使用が考慮されます.BETWEEN、IN、IS NULL、IS NOT NULLを使用するクエリでは、PostgreSQLはB-Treeインデックスを使用することもできます.ただし、LIKE、ILIKE、~および~*などのモードマッチングオペレータベースのクエリーでは、モードに定数が存在し、その定数がモード文字列の先頭にある場合にのみ、col LIKE‘foo%’またはcol~‘^foo’のようにインデックスが有効になります.そうしないと、col LIKE‘%bar’などの全テーブルスキャンが実行されます.
    CREATE INDEX index_name ON table_name (column_name); 

ハッシュインデックス
ハッシュインデックスは、単純な等しい比較のみを処理できます.クエリー・プランナは、インデックス・カラムがイコール・オペレータを使用して比較される場合、ハッシュ・インデックスを使用することを考慮します.さらに、PostgreSQLハッシュ・インデックスのパフォーマンスはB-Treeインデックスよりも優れていませんが、ハッシュ・インデックスのサイズと構築時間はさらに劣っています.また、ハッシュ・インデックス・オペレーションにはWALログが記録されていないため、データベースのクラッシュが発生すると、REINDEXでハッシュ・インデックスを再構築する必要があります.
    CREATE INDEX name ON table USING hash (column);

GISTインデックス
GiST             ,      ,                  。     GiST           ,           。 

GINインデックス
GINインデックスは、複数のキーを含む値(配列など)を処理できる反転インデックスです.GISTと同様に、GINはユーザ定義のインデックスポリシーをサポートし、GINインデックスを異なるインデックスポリシーに従って特定のオペレータタイプを使用することができる.例として、PostgreSQLの標準パブリケーションには、、=、&&などの1次元配列用のGINオペレータタイプが含まれています.
by z