PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Разлика между индекса GiST и GIN

Не мисля, че бих могъл да го обясня по-добре от ръководството, което вече го прави:

Когато избирате кой тип индекс да използвате, GiST или GIN, вземете предвид тези разлики в производителността:

  • Проверките на GIN индекс са около три пъти по-бързи от GiST

  • Изграждането на GIN индекси отнема около три пъти повече време, отколкото GiST

  • GIN индексите са умерено по-бавни за актуализиране от GiST индексите, но около 10 пъти по-бавни, ако поддръжката за бързо актуализиране е била деактивирана [...]

  • GIN индексите са два до три пъти по-големи от индексите GiST

Връзка и цитат се отнасят до ръководството за Postgres 9.4. Оценките за размера и производителността вече изглеждаха леко остарели. С Postgres 9.4 шансовете се изместиха значително в полза на GIN .
Бележките по версията на Postgres 9.4 включват:

  • Намалете размера на индекса GIN (Александър Коротков, Хейки Линакангас) [...]

  • Подобрете скоростта на GIN търсене с няколко клавиша (Александър Коротков, HeikkiLinnakangas)

Оттогава оценките за размер и ефективност са премахнати от ръководството.

Имайте предвид, че има специални случаи на употреба, които изискват едното или другото.

Едно нещо, което не сте разбрали:Виеникогате получавате грешни резултати с индекс GiST. Индексът работи с хеш стойности, които може водят до фалшиви положителни резултати в индекса. Това трябва да стане релевантно само с много голям брой различни думи във вашите документи. Във всеки случай фалшивите положителни резултати се елиминират след повторна проверка на действителния ред. Ръководството:

GiST индексът е със загуба, което означава, че индексът може да генерира фалшиви съвпадения и е необходимо да се провери действителният ред на таблицата, за да се елиминират такива фалшиви съвпадения. (PostgreSQL прави това автоматично, когато е необходимо. )

Удебелен акцент мой.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Прост Postgresql изявление - името на колоната не съществува

  2. NodeJS Postgres грешка getaddrinfo ENOTFOUND

  3. ГРЕШКА в PostgreSQL:функция to_tsvector(променлив знак, неизвестен) не съществува

  4. Heroku и Rails:Грешка при зареждане на Gem с Postgres, но е посочена в GEMFILE

  5. Escape SQL LIKE стойност за Postgres с psycopg2