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

Różnica między indeksem GiST i GIN

Nie sądzę, bym mógł to wyjaśnić lepiej niż to już robi instrukcja:

Wybierając typ indeksu, GiST lub GIN, weź pod uwagę następujące różnice w wydajności:

  • Wyszukiwanie indeksu GIN jest około trzy razy szybsze niż GiST

  • Tworzenie indeksów GIN trwa około trzy razy dłużej niż GiST

  • Indeksy GIN są aktualizowane umiarkowanie wolniej niż indeksy GiST, ale około 10 razy wolniej, jeśli obsługa szybkiej aktualizacji została wyłączona [...]

  • Indeksy GIN są dwa do trzech razy większe niż indeksy GiST

Link i cytat odnoszą się do instrukcji dla Postgresa 9.4. Szacunki dotyczące wielkości i wydajności wydawały się już nieco przestarzałe. Wraz z Postgresem 9.4 szanse znacznie się zmieniły na korzyść GIN .
Informacje o wydaniu Postgresa 9.4 obejmują:

  • Zmniejsz rozmiar indeksu GIN (Alexander Korotkov, Heikki Linnakangas) [...]

  • Popraw szybkość wyszukiwania GIN z wieloma klawiszami (Alexander Korotkov, HeikkiLinnakangas)

Szacunki dotyczące rozmiaru i wydajności zostały od tego czasu usunięte z instrukcji.

Pamiętaj, że istnieją specjalne przypadki użycia, które wymagają jednego lub drugiego.

Jedna rzecz, której nie zrozumiałeś:nigdy uzyskać błędne wyniki z indeksem GiST. Indeks operuje na wartościach skrótu, które może prowadzić do fałszywych alarmów w indeksie. Powinno to mieć znaczenie tylko w przypadku bardzo dużej liczby różnych słów w dokumentach. Fałszywe alarmy są eliminowane po ponownym sprawdzeniu rzeczywistego wiersza w każdym przypadku. Instrukcja:

Indeks GiST jest stratny, co oznacza, że ​​indeks może generować fałszywe dopasowania i konieczne jest sprawdzenie rzeczywistego wiersza tabeli, aby wyeliminować takie fałszywe dopasowania. (PostgreSQL robi to automatycznie w razie potrzeby. )

Pogrubiony nacisk na moje.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uniknąć zapętlania się wywołań wyzwalaczy w PostgreSQL 9.2.1?

  2. Usuń rodzica, jeśli nie odwołuje się do niego żadne inne dziecko

  3. Jak wyświetlić bazy danych i tabele w PostgreSQL za pomocą psql

  4. Indeks do znajdowania elementu w tablicy JSON

  5. Sortowanie wartości null po wszystkich innych, z wyjątkiem specjalnych