PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgres GIST vs indeks Btree

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można połączyć się z postgresem za pomocą jdbc w powłoce pyspark

  2. Nie można połączyć się z bazą danych PostgreSQL na Heroku za pomocą Rubiego - nie można przetłumaczyć nazwy hosta

  3. Używanie docker-compose do tworzenia tabel w bazie postgresql

  4. Czy Postgres przekaże klauzulę WHERE do VIEW z funkcją Window (Aggregate)?

  5. Postgresql — twórz dynamicznie bazę danych i tabelę