Musisz użyć GiST, jeśli chcesz użyć jakiejkolwiek metody indeksowania innej niż zwykłe indeksy b-drzewa (lub indeksy mieszające, ale tak naprawdę nie powinny być używane). Indeksy PostGIS wymagają GiST.
Indeksy B-drzewa mogą być używane tylko do podstawowych operacji związanych z równością lub porządkowaniem, takich jak =
, <
, <=
, > ,
>=
, <> ,
POMIĘDZY
i IN
. Chociaż możesz utworzyć indeks b-drzewa na obiekcie geometrycznym (punkt, region itp.), W rzeczywistości może on być używany tylko do równości jako porównania porządkowania, takie jak są generalnie bez znaczenia dla takich obiektów. Indeks GiST jest wymagany do obsługi bardziej złożonych i ogólnych porównań, takich jak „zawiera”, „przecina” itp.
Możesz użyć btree_gist
rozszerzenie
aby włączyć indeksowanie b-drzewa dla GiST. Jest znacznie wolniejszy niż zwykłe indeksy b-drzewa, ale umożliwia utworzenie indeksu wielokolumnowego, który zawiera zarówno typy tylko GiST, jak i typy zwykłe, takie jak text
, liczba całkowita
itp.
W takich sytuacjach naprawdę musisz użyć wyjaśnij analizę
(explain.depesz.com
jest to przydatne) do zbadania, w jaki sposób Pg używa różnych indeksów i kombinacji indeksów, które tworzysz. Wypróbuj różne porządki kolumn w indeksach wielokolumnowych i sprawdź, czy dwa lub więcej oddzielnych indeksów jest bardziej efektywnych.
Podejrzewam, że w tym przypadku najlepsze wyniki uzyskasz z wielokolumnowym indeksem GiST, ale wypróbowałbym kilka różnych kombinacji indeksów i kolejności kolumn indeksu.