PostgreSQL Index Advisor
(github.com/supabase)- クエリ性能を向上させるためのインデックスを推奨してくれる Supabase の PostgreSQL 拡張
index_advisor()関数にクエリを渡すと、起動時/全体に対する前後のコストとインデックス作成用の SQL DDL を返す- 実行:
select * from index_advisor('select book.id from book where title = $1'); - 返り値:
{"CREATE INDEX ON public.book USING btree (title)"}
- 実行:
- 複雑なクエリに対しては、複数のインデックス作成文を返すこともある
- ジェネリックパラメータをサポート (
$1,$2, ..) - Materialized View をサポート
- ビューによって隠されたテーブル/カラムを識別可能
3件のコメント
現行バージョンでは、単一カラムの btree インデックスのみを推奨します。クエリ条件が複雑になったり、full text 検索を行っていたりする場合は利用できません。https://supabase.com/docs/guides/…
検索条件が複雑な場合、複合インデックスの代わりに複数の単一カラムインデックスが使われるとは言われますが、まったく同じ動作をするわけではないようです。あるいは、複合インデックスと複数の単一カラムインデックスを同時に使うのが最善なケースもあるそうです
https://www.postgresql.org/docs/current/indexes-bitmap-scans.html
Hacker Newsのコメント
index_advisor(text)関数をセッションにコピーして、ハードコーディングやヒューリスティックを始めたくなる誘惑がある