- Sorgu performansını iyileştirmek için indeks öneren, Supabase tarafından geliştirilen bir PostgreSQL eklentisi
index_advisor() fonksiyonuna bir sorgu verildiğinde, başlangıç/toplam için önceki/sonraki maliyetleri ve indeks oluşturmak için SQL DDL döndürür
- Çalıştırma:
select * from index_advisor('select book.id from book where title = $1');
- Dönüş:
{"CREATE INDEX ON public.book USING btree (title)"}
- Karmaşık sorgular için birden fazla indeks oluşturma ifadesi de döndürebilir
- Jenerik parametre desteği ($1, $2, ..)
- Materialized View desteği
- View tarafından gizlenen tablo/sütunları tespit edebilir
3 yorum
Mevcut sürümde yalnızca tek sütunlu
btreeindeksleri öneriliyor. Sorgu koşulları karmaşıklaştığında veya full text araması yapıyorsanız bunu kullanamazsınız https://supabase.com/docs/guides/…Sorgu koşulları karmaşık olduğunda çok sütunlu indeks yerine birden fazla tek sütunlu indeksin kullanıldığı söyleniyor, ancak bunun tam olarak aynı şekilde çalışmadığı anlaşılıyor. Ya da çok sütunlu indeks ile birden fazla tek sütunlu indeksi aynı anda kullanmanın en iyi olduğu durumlar da var deniyor.
https://www.postgresql.org/docs/current/indexes-bitmap-scans.html
Hacker News yorumları
limitkoymazsan Postgres her join'i paralel çalıştırmaya uğraşıyor ve çok sayıda satırı join etmeye çalışıyorindex_advisor(text)fonksiyonunu oturuma kopyalayıp hard-code ve heuristic denemelerine başlama cazibesi var