- Eine PostgreSQL-Erweiterung von Supabase, die Indizes zur Verbesserung der Query-Performance empfiehlt
- Übergibt man eine Query an die Funktion
index_advisor(), gibt sie die Kosten vor/nach der Optimierung für den Start-up-/Gesamtaufwand sowie SQL-DDL zum Erstellen von Indizes zurück
- Ausführung:
select * from index_advisor('select book.id from book where title = $1');
- Rückgabe:
{"CREATE INDEX ON public.book USING btree (title)"}
- Bei komplexen Queries werden mitunter mehrere Anweisungen zum Erstellen von Indizes zurückgegeben
- Unterstützung für generische Parameter ($1, $2, ..)
- Unterstützung für materialisierte Views
- Kann durch Views verdeckte Tabellen/Spalten identifizieren
3 Kommentare
In der aktuellen Version werden nur
btree-Indizes für einzelne Spalten empfohlen. Wenn die Abfragebedingungen komplexer werden oder Sie eine Full-Text-Suche verwenden, kann es nicht genutzt werden: https://supabase.com/docs/guides/…Wenn die Abfragebedingungen komplex sind, heißt es zwar, dass statt eines Mehrspaltenindex mehrere Einzelspaltenindizes verwendet werden, aber es scheint nicht exakt dasselbe Verhalten zu sein. Oder es soll Situationen geben, in denen es am besten ist, einen Mehrspaltenindex und mehrere Einzelspaltenindizes gleichzeitig zu verwenden.
https://www.postgresql.org/docs/current/indexes-bitmap-scans.html
Hacker-News-Kommentare
LIMITauf die CTE setzt, versucht Postgres, jeden Join parallel auszuführen und eine riesige Zahl von Zeilen zu joinenindex_advisor(text)in die Session zu kopieren und mit Hardcoding und Heuristiken loszulegen