ユーザ用ツール

サイト用ツール


it技術:データベース:postgresql

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
it技術:データベース:postgresql [2024/02/23 21:20] – [PostgreSQL15情報] yajuadminit技術:データベース:postgresql [2024/04/24 16:37] (現在) – [複合インデックス] yajuadmin
行 645: 行 645:
 |×|×|○|可 ※table scanが選択される可能性高い| |×|×|○|可 ※table scanが選択される可能性高い|
 |×|×|×|不可| |×|×|×|不可|
 +
 +=== bloomインデックス ===
 +bloomインデックスは、その名前のとおり、ブルームフィルタを用いて、条件を満たさないタプルを高速に除外する(=条件を満たす「かもしれない」タプルを残す)ことが可能なインデックスメソッドです。
  
 主キーが複数の場合のインデックスにはデフォルトのb-treeインデックスが使用されるが、弱点として先頭のキーが外れるとインデックスが使われなくなる。その場合に複数列インデックスには、bloomインデックスを使用することで、先頭のキーが条件が外れていてもインデックスが使われる。\\ 主キーが複数の場合のインデックスにはデフォルトのb-treeインデックスが使用されるが、弱点として先頭のキーが外れるとインデックスが使われなくなる。その場合に複数列インデックスには、bloomインデックスを使用することで、先頭のキーが条件が外れていてもインデックスが使われる。\\
 [[https://qiita.com/nuko_yokohama/items/4a7fe2a731a479189034|bloomインデックス]] [[https://qiita.com/nuko_yokohama/items/4a7fe2a731a479189034|bloomインデックス]]
 +
 +bloomインデックスの本領は、複数列に対するインデックス設定をするときに発揮されます。bloom複合列インデックスの場合は、定義した列の順序に関係なくインデックス検索→Birmap Scanになります。B-Treeインデックスが使われるたケースと比べると検索時間は遅くなりますが、SeqScanほど遅くはないという検索時間になります。
 +
 +<code sql>
 +-- 拡張追加
 +create extension bloom
 +-- 拡張確認
 +SELECT * FROM pg_available_extensions WHERE installed_version IS NOT NULL
 +-- bloomインデックスを追加
 +CREATE INDEX idx_res_match ON res_match USING bloom (factory_cd, line_cd, seq_no, lotserial, cp_cd)
 +</code>
 ==== 実行計画の取得 ==== ==== 実行計画の取得 ====
 SQLの前に「EXPLAIN」か「EXPLAIN ANALYZE」を付ける。\\ SQLの前に「EXPLAIN」か「EXPLAIN ANALYZE」を付ける。\\
it技術/データベース/postgresql.1708690800.txt.gz · 最終更新: 2024/02/23 21:20 by yajuadmin