it技術:データベース:postgresql
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
it技術:データベース:postgresql [2024/02/23 21:20] – [PostgreSQL15情報] yajuadmin | it技術:データベース:postgresql [2024/04/24 16:37] (現在) – [複合インデックス] yajuadmin | ||
---|---|---|---|
行 645: | 行 645: | ||
|×|×|○|可 ※table scanが選択される可能性高い| | |×|×|○|可 ※table scanが選択される可能性高い| | ||
|×|×|×|不可| | |×|×|×|不可| | ||
+ | |||
+ | === bloomインデックス === | ||
+ | bloomインデックスは、その名前のとおり、ブルームフィルタを用いて、条件を満たさないタプルを高速に除外する(=条件を満たす「かもしれない」タプルを残す)ことが可能なインデックスメソッドです。 | ||
主キーが複数の場合のインデックスにはデフォルトのb-treeインデックスが使用されるが、弱点として先頭のキーが外れるとインデックスが使われなくなる。その場合に複数列インデックスには、bloomインデックスを使用することで、先頭のキーが条件が外れていてもインデックスが使われる。\\ | 主キーが複数の場合のインデックスにはデフォルトのb-treeインデックスが使用されるが、弱点として先頭のキーが外れるとインデックスが使われなくなる。その場合に複数列インデックスには、bloomインデックスを使用することで、先頭のキーが条件が外れていてもインデックスが使われる。\\ | ||
[[https:// | [[https:// | ||
+ | |||
+ | 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, | ||
+ | </ | ||
==== 実行計画の取得 ==== | ==== 実行計画の取得 ==== | ||
SQLの前に「EXPLAIN」か「EXPLAIN ANALYZE」を付ける。\\ | SQLの前に「EXPLAIN」か「EXPLAIN ANALYZE」を付ける。\\ |
it技術/データベース/postgresql.txt · 最終更新: 2024/04/24 16:37 by yajuadmin