他のバージョンの文書 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

57.1. はじめに

GINとは汎用転置インデックスを表します。 GINは、インデックス対象の項目が複合型であり、インデックスにより取り扱われる問い合わせが複合型の項目内に存在する要素値に対して検索する必要がある場合を取り扱うために設計されました。 例えば、項目が文書であり、問い合わせが特定の単語を含む文書を検索することがあり得ます。

ここでインデックス対象の複合型の値を参照するために項目という単語を使用します。 また、キーという単語を要素値を参照するために使用します。 GINは本質的に、項目の値ではなく、常にキーを格納し検索します。

GINインデックスは(キー、投稿されたリスト)の組み合わせの集合を格納します。 ここで"投稿されたリスト"はキーに合う行IDの集合です。 項目は1つ以上のキーを含むことができますので、同じ行IDが複数の投稿されたリストに現れることがあり得ます。 キー値はそれぞれ一度のみ格納されます。 このためGINインデックスの容量は、同じキーが何度も現れる場合に非常に小さくなります。

GINインデックスは、GINアクセスメソッドが高速化対象の操作を把握する必要がないという意味で汎用化されています。 その代わり、特定のデータ型に対して定義された独自の戦略を使用します。 戦略は、インデックス付けされた項目と問い合わせ条件からキーを抽出する方法および問い合わせ内のいくつかのキー値を含む行が実際に問い合わせを満たすかどうかを決定する方法を定義します。

GINの利点の1つは、データベース専門家ではなくデータ型の分野における専門家により、適切なアクセスメソッドを持つ独自のデータ型を開発できるという点です。 これはGiSTの使用とほぼ同じ利点です。

PostgreSQLにおけるGINの実装は、主にTeodor SigaevとOleg Bartunovにより保守されています。 GINに関する情報は彼らのwebサイトにより多く記載されています。