supabase/index_advisor
supabase/index_advisor has 1,709 GitHub stars and 24 forks. GitHot measured 0 stars in 24 hours and 0 in 7 days. Last checked 2026-11-14 20:51 UTC. Last push 2026-10-28.
What you can do
- Supports generic parameters e.g. $1, $2
- Supports materialized views
- Identifies tables/columns obfuscaed by views
Crecimiento de estrellas medido
- in 24h
- 0
- in 7 days
- 0
- in 15 days
- Recopilando historial
- in 1 month
- Recopilando historial
Cambios netos en períodos que se solapan, no totales diarios. Los datos no disponibles se dejan en blanco. Las estrellas indican interés, no calidad.
Acerca de
PostgreSQL Index Advisor
DatosREADME.md
OriginalPostgreSQL Index Advisor
A PostgreSQL extension for recommending indexes to improve query performance.

Features
- Supports generic parameters e.g.
$1,$2 - Supports materialized views
- Identifies tables/columns obfuscaed by views
API
Description
For a given query, searches for a set of SQL DDL create index statements that improve the query's execution time;
Signature
index_advisor(query text)
returns
table (
startup_cost_before jsonb,
startup_cost_after jsonb,
total_cost_before jsonb,
total_cost_after jsonb,
index_statements text[],
errors text[]
)
Usage
For a minimal example, the index_advisor function can be given a single table query with a filter on an unindexed column.
create extension if not exists index_advisor cascade;
create table book(
id int primary key,
title text not null
);
select
*
from
index_advisor('select book.id from book where title = $1');
startup_cost_before | startup_cost_after | total_cost_before | total_cost_after | index_statements | errors
---------------------+--------------------+-------------------+------------------+-----------------------------------------------------+--------
0.00 | 1.17 | 25.88 | 6.40 | {"CREATE INDEX ON public.book USING btree (title)"},| {}
(1 row)
More complex queries may generate additional suggested indexes
create extension if not exists index_advisor cascade;
create table author(
id serial primary key,
name text not null
);
create table publisher(
id serial primary key,
name text not null,
corporate_address text
);
create table book(
id serial primary key,
author_id int not null references author(id),
publisher_id int not null references publisher(id),
title text
);
create table review(
id serial primary key,
book_id int references book(id),
body text not null
);
select
*
from
index_advisor('
select
book.id,
book.title,
publisher.name as publisher_name,
author.name as author_name,
review.body review_body
from
book
join publisher
on book.publisher_id = publisher.id
join author
on book.author_id = author.id
join review
on book.id = review.book_id
where
author.id = $1
and publisher.id = $2
');
startup_cost_before | startup_cost_after | total_cost_before | total_cost_after | index_statements | errors
---------------------+--------------------+-------------------+------------------+-----------------------------------------------------------+--------
27.26 | 12.77 | 68.48 | 42.37 | {"CREATE INDEX ON public.book USING btree (author_id)", | {}
"CREATE INDEX ON public.book USING btree (publisher_id)",
"CREATE INDEX ON public.review USING btree (book_id)"}
(3 rows)
Install
Requires Postgres with hypopg installed.
git clone https://github.com/supabase/index_advisor.git
cd index_advisor
sudo make install
Run Tests
make install; make installcheck