マニュアルよりもうまく説明できるとは思いません:
使用するインデックスタイプ(GiSTまたはGIN)を選択する際は、次のパフォーマンスの違いを考慮してください。
GINインデックスのルックアップはGiSTの約3倍高速です
GINインデックスの構築にはGiSTの約3倍の時間がかかります
GINインデックスの更新はGiSTインデックスよりも適度に遅くなりますが、高速更新のサポートが無効になっている場合は約10倍遅くなります[...]
GINインデックスはGiSTインデックスの2〜3倍です
リンクと引用はPostgres9.4のマニュアルを参照してください。サイズとパフォーマンスの見積もりは、すでに少し古くなっているように見えました。 Postgres 9.4では、オッズが大幅にGINに有利にシフトしました。 。
Postgres9.4のリリースノートには次のものが含まれます。
GINインデックスサイズを縮小する(Alexander Korotkov、Heikki Linnakangas)[...]
マルチキーGINルックアップの速度を改善します(Alexander Korotkov、HeikkiLinnakangas)
サイズとパフォーマンスの見積もりは、マニュアルから削除されました。
どちらか一方を必要とする特別なユースケースがあることに注意してください。
あなたが誤解したことの1つ:あなたは決して GiSTインデックスで間違った結果を取得します。インデックスはハッシュ値に基づいて動作します。ハッシュ値は インデックスの誤検知につながります。これは、ドキュメント内の非常に多くの異なる単語にのみ関連するようになるはずです。いずれの場合も、実際の行を再チェックした後、誤検知は排除されます。マニュアル:
GiSTインデックスは不可逆であるため、インデックスが誤った一致を生成する可能性があり、実際のテーブル行をチェックしてそのような誤った一致を排除する必要があります。 (PostgreSQLは必要に応じてこれを自動的に実行します。 )
大胆な強調鉱山。