Postgres 10 eller nyere
btree_gist
dækker nu også datatypen uuid
, ligesom Paul kommenterede
. (Og nogle andre datatyper, bemærkelsesværdigt alle enum
typer.)
Nu skal du bare gøre:Installer udvidelsen én gang pr. database:
CREATE EXTENSION btree_gist;
Så skulle dit indeks bare virke.
Relateret:
- Ekskluderingsbegrænsning på en bitstrengskolonne med bitvise AND-operator
- Oprettelse af multikolonneindeks i PostgreSQL, der indeholder både skalar- og matrixkolonner
Postgres 9.6 eller ældre
(Originalt svar.)
Normalt vil jeg foreslå det ekstra modul btree_gist
, men typen uuid
er ikke dækket af det.
I teorien, da en UUID er a 128-bit quantity
(pr. dokumentation
), ville den mest effektive måde være at konvertere den til to bigint
eller float8
med henblik på indekset. Men ingen af disse afstøbninger er defineret i standard Postgres.
Jeg har fundet en
For at gøre brug af dette funktionelle indeks skal forespørgsler matche dette udtryk. Du kan bruge forkortelsen
Til side:Brug ikke
Spørgsmålet er:hvorfor har du brug for GiST-indekset. Den bedste løsning afhænger af målet."value"::text
i forespørgsler (men ikke i indeksdefinitionen uden at tilføje flere parenteser).value
som kolonnenavn er det et reserveret ord i standard SQL .