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

Индекс с няколко колони на 3 полета с хетерогенни типове данни

Индекс с една колона

Postgres може да комбинира много ефективно множество индекси в една заявка с сканиране на растерни индекси . През повечето време се избира най-селективният индекс (или два, комбинирани със сканиране на индекс на растерни изображения), а останалата част се филтрира. След като наборът от резултати е достатъчно тесен, не е ефективно да се сканират повече индекси.

Многоколонов индекс

Все още е по-бързо да имате идеално съвпадащ многоколонен индекс, но не по порядък.
Тъй като искате да включите тип масив Предлагам да използвате GIN индекс. AFAIK, операторни класове липсват за GiST индекси с общо предназначение за тип масив. (Изключението е intarray за integer масиви.)

За да включите integer колона, първо инсталирайте допълнителния модул btree_gin , който предоставя необходимите GIN операторни класове. Изпълнете веднъж на база данни :

CREATE EXTENSION btree_gin;

След това трябва да можете да създадете своя многоколонен индекс:

CREATE INDEX tbl_abc_gin_idx ON tbl USING GIN(a, b, c);

Редът на индексните колони е без значение за GIN индексите. Ръководството:

Многоколонен GIN индекс може да се използва с условия на заявка, които включват всяко подмножество от колоните на индекса. За разлика от B-tree или GiST, ефективността на търсенето в индекса е една и съща, независимо коя колона(и) на индекса използват условията на заявката.

Търсене на най-близкия съсед

Тъй като включвате PostGis geometry тип, вероятно искате да направите търсене на най-близкия съсед, за което имате нужда от GiST индекс. В този случай предлагам две индекси:

CREATE INDEX tbl_ac_gist_idx ON tbl USING GiST(a, c);  -- geometry type
CREATE INDEX tbl_bc_gin_idx  ON tbl USING GIN(b, c);

Можете да добавите integer колона c към едното или и двете. Зависи. За това ви трябва или btree_gin или btree_gist или съответно и двете.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как Asinh() работи в PostgreSQL

  2. PostgreSQL:Паралелизъм на заявките в действие

  3. Postgres копирайте Heroku Production DB към локалната база за разработка

  4. Как мога да реша проблема с удостоверяването на Postgresql SCRAM?

  5. Буквено-цифрово сортиране с PostgreSQL