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

Как да използвам uuid с тип индекс на postgresql gist?

Postgres 10 или по-нов

btree_gist вече обхваща и типа данни uuid , като Пол коментира . (И някои други типове данни, забележително всички enum типове.)

Сега всичко, което трябва да направите:инсталирайте разширението веднъж за база данни:

CREATE EXTENSION btree_gist;

Тогава вашият индекс просто трябва да работи.

Свързани:

Postgres 9.6 или по-стара версия

(Оригинален отговор.)
Обикновено бих предложил допълнителния модул btree_gist , но типът uuid е не обхванати от него.

На теория, тъй като UUID е a 128-bit quantity (по документация ), най-ефективният начин би бил да го конвертирате в два bigint или float8 за целите на индекса. Но нито едно от тези отливки не е дефинирано в стандартния Postgres.

I found a stab in тази посока в списъка с pqsql-хакери , но изглежда неуспешно.

Останалата опция е функционален GiST индекс върху text представяне:

CREATE INDEX idx_leaderboads_values_gist
ON leaderboard_entry USING gist (id_leaderboard, cast("value" AS text));

За да се използва този функционален индекс, заявките трябва да съответстват на този израз. Можете да използвате съкращенията "value"::text в заявки (но не и в дефиницията на индекс без добавяне на повече скоби).

Настрана:не използвайте value като име на колона това е запазена дума в стандартен SQL .

Въпросът е:защо имате ли нужда от 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. Как да заснема записи за грешки с помощта на JDBCTemplate batchUpdate в postgreSql?

  2. Защо pg_restore се връща успешно, но всъщност не възстановява моята база данни?

  3. psycopg2.ProgrammingError:синтактична грешка при или близо до stdin грешка при опит за copy_from redshift

  4. Дълбоко гмуркане на доставчик на облак:PostgreSQL на AWS Aurora

  5. PostgreSQL работи бавно? Съвети и трикове, за да стигнете до източника