質問

私が見つけた情報によると、どちらも同じ問題、つまり配列の包含や交差 (&&、@>、<@ など) などの難解な操作を解決します。ただし、どちらかをいつ使用するか (あるいはどちらも使用しない場合) についてアドバイスをいただければ幸いです。
PostgreSQL ドキュメント これに関する情報があります:

  • GIN インデックスの検索は GiST より約 3 倍高速です
  • GIN インデックスの構築には GiST よりも約 3 倍の時間がかかります
  • GIN インデックスの更新は GiST よりも約 10 倍遅い
  • GIN インデックスは GiST の 2 ~ 3 倍大きい

ただし、メモリとインデックスのサイズの比率が小さくなり始めたときに、パフォーマンスに影響があるかどうかを知りたいと考えています。インデックスのサイズが利用可能なメモリよりもはるかに大きくなります)?#postgresql IRC チャネルで、GIN はすべてのインデックスをメモリ内に保持する必要があると言われました。そうしないと効果がありません。B ツリーとは異なり、ディスクからどの部分を読み込むのかがわからないからです。特定のクエリですか?質問は次のとおりです。これは本当ですか(私も反対のことを言われたことがあるので)?GiST にも同じ制限がありますか?これらのインデックス作成アルゴリズムのいずれかを使用する際に注意すべき他の制限はありますか?

役に立ちましたか?

解決

まず第一に、テキスト検索のインデックス作成にそれらを使用する必要がありますか?GIN と GiST は、一部のデータ型に特化したインデックスです。単純な文字または整数値のインデックスを作成する必要がある場合は、通常の B ツリー インデックスが最適です。
とにかく、PostgreSQL ドキュメントには次の章があります。 要旨 そして1つ ジン, 詳細については、こちらをご覧ください。
そして最後になりましたが、どれが最適かを見つける最善の方法は、(実際のシナリオに必要な量の) サンプル データを生成し、GIST インデックスを作成して、インデックスの作成に必要な時間を測定することです。新しい値を挿入し、サンプル クエリを実行します。次に、インデックスを削除し、GIN インデックスで同じことを行います。値を比較すると、データに基づいて必要な答えが得られます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top