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

Jak używać uuid z typem indeksu postgresql gist?

Postgres 10 lub nowszy

btree_gist teraz obejmuje również typ danych uuid , jak Paweł skomentował . (I kilka innych typów danych, szczególnie wszystkie enum typy.)

Teraz wszystko, co musisz zrobić:zainstaluj rozszerzenie raz na bazę danych:

CREATE EXTENSION btree_gist;

Wtedy twój indeks powinien po prostu działać.

Powiązane:

Postgres 9.6 lub starszy

(Oryginalna odpowiedź.)
Zwykle sugerowałbym dodatkowy moduł btree_gist , ale typ uuid jest nie objęte tym.

Teoretycznie, ponieważ UUID to a 128-bit quantity (w dokumentacji ), najbardziej efektywnym sposobem byłoby przekonwertowanie go na dwa bigint lub float8 do celów indeksu. Ale żaden z tych rzutów nie jest zdefiniowany w standardowym Postgresie.

Udało mi się znaleźć w tym kierunku na liście pqsql-hackerów , ale wydaje się, że się nie udało.

Pozostała opcja to funkcjonalny indeks GiST w text reprezentacja:

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

Aby skorzystać z tego indeksu funkcjonalnego, zapytania muszą pasować do tego wyrażenia. Możesz użyć skrótu "value"::text w zapytaniach (ale nie w definicji indeksu bez dodawania kolejnych nawiasów).

Na marginesie:nie używaj value jako nazwa kolumny jest to zastrzeżone słowo w standardowym SQL .

Pytanie brzmi:dlaczego czy potrzebujesz indeksu GiST. Najlepsze rozwiązanie zależy od celu.



  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 zainstalować tylko narzędzia klienckie dla PostgreSQL w systemie Windows?

  2. Jak mogę używać kursorów po stronie serwera z django i psycopg2?

  3. Sumuj według miesiąca i wstawiaj miesiące jako kolumny

  4. Wywołaj funkcję z typem złożonym jako argumentem z natywnego zapytania w jpa

  5. Jak podzielić wiersz na wiele wierszy za pomocą jednego zapytania?