GiSTとGIN指数の違い
質問
テーブルを実装しているのですが、データ型が
tsvector
というデータ型のカラムを持つテーブルを実装しているのですが、どのようなインデックスを使用するのが良いのか理解しようとしています。
GINかGiSTか?
を調べてみると postgres documentation here というのが出てくるようです。
-
GiSTはインデックスを更新して構築するのが速く、ginより精度が低いです。
-
GINはインデックスの更新と構築に時間がかかりますが、より正確です。
OK、では、なぜ誰もがginよりもgistのインデックスを持つフィールドを欲しがるのでしょうか?もし、gistが間違った結果を与える可能性があるとしたら?これには(パフォーマンス以外の)何らかの利点があるはずです。
どなたか、GINとGiSTをいつ使いたいのか、平易な言葉で説明していただけませんか?
どのように解決するのですか?
これ以上うまく説明できるとは思えませんが マニュアル がすでに行っています。
<ブロッククオートGiSTとGIN、どちらのインデックスタイプを使用するかを選択する際には、以下の点を考慮してください。 パフォーマンスの違いを考慮してください。
-
GIN インデックス検索は GiST よりも約 3 倍高速です。
-
GIN インデックスの構築には GiST の約 3 倍の時間がかかる
-
GINインデックスはGiSTインデックスよりも更新が中程度に遅いが、高速更新のサポートが無効な場合は約10倍遅くなる[...]
-
GIN インデックスは GiST インデックスより 2 ~ 3 倍大きい。
リンクと引用は、Postgres 9.4のマニュアルを参照しています。サイズとパフォーマンスの見積もりは、すでに若干古くなっているようでした。
Postgres 9.4では、確率は大幅に変化しました。
GINに有利になります。
.
は
のリリースノートでは、Postgres 9.4
が含まれます。
GINインデックスサイズを縮小しました。(Alexander Korotkov, Heikki Linnakangas) [...]
マルチキーGINルックアップの速度を向上させました。 Linnakangas)
サイズと性能の見積もりは、その後、マニュアルから削除されました。
があることに注意してください。 特別な使用例 があり、どちらか一方を必要とすることに注意してください。
ひとつ誤解されていることがあります。 決して は、GiSTインデックスで間違った結果を得ることはありません。このインデックスはハッシュ値で動作し は はインデックスで偽陽性を引き起こす可能性があります。これは、ドキュメントに非常に多くの異なる単語がある場合にのみ関係するはずです。誤検出は、どのような場合でも実際の行を再確認した後に排除されます。 マニュアル :
<ブロッククオートGiSTインデックスは非可逆的であり、インデックスが偽のマッチを生成する可能性があります。 を生成する可能性があり、そのような偽のマッチを排除するために実際のテーブル行をチェックする必要があります。 そのような誤ったマッチを排除するために、実際のテーブル行をチェックする必要があります。( PostgreSQLは必要な時にこれを自動的に行います。 )
太字強調は私です。
関連
-
どのように定期的にLinux上でpostgresqlのデータベースをバックアップする
-
pgAdmin for postgreSQLでサーバーのデータをバックアップする方法
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] インデックスを指定してリストから要素を削除する方法
-
[解決済み] psqlでデータベースを切り替えるには?
-
[解決済み] クラスター化インデックスと非クラスター化インデックスの実際の意味は何ですか?
-
[解決済み] textとvarcharの違い(character varying)
-
[解決済み] Postgresデータベースの全テーブルを切り捨てる
-
[解決済み] PostgreSQLでカラムのデフォルト値を変更するにはどうすればよいですか?
-
[解決済み] enumが持ちうるすべての値を取得するSQLクエリ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Postgresqlのユーザーログインエラーの回数を制限するサンプルコード
-
PostgreSQLのユーザーログイン失敗時の自動ロック解決策
-
postgreSQLのクエリ結果に自己インクリメントシーケンス演算が追加されました。
-
PostgreSQLで時間指定タスクを実装する4つの方法
-
[解決済み] PostgreSQLで類似した文字列を素早く検索する
-
[解決済み] Psql はサーバーに接続できませんでした。そのようなファイルまたはディレクトリがありません、5432エラー?
-
[解決済み] psqlの代替出力フォーマット
-
[解決済み] Postgres / PostgreSQLのテーブルとインデックスのディスクサイズはどのように見つけるのですか?
-
[解決済み] PostgreSQLのLIKEクエリのパフォーマンスのばらつき
-
[解決済み] PostgreSQLは "アクセントを考慮しない "照合順序をサポートしていますか?