Postgres 10 of nieuwer
btree_gist
omvat nu ook het gegevenstype uuid
, zoals Paul heeft gereageerd
. (En enkele andere gegevenstypen, opmerkelijk allemaal enum
typen.)
Nu hoeft u alleen nog maar de extensie één keer per database te installeren:
CREATE EXTENSION btree_gist;
Dan zou je index gewoon moeten werken.
Gerelateerd:
- Uitsluitingsbeperking op een bitstringkolom met bitsgewijze AND-operator
- Een index met meerdere kolommen maken in PostgreSQL, die zowel scalaire als arraykolommen bevat
Postgres 9.6 of ouder
(Oorspronkelijk antwoord.)
Normaal gesproken zou ik de aanvullende module btree_gist
, maar het type uuid
is niet erdoor gedekt.
In theorie, aangezien een UUID a 128-bit quantity
is (per documentatie
), zou de meest efficiënte manier zijn om het te converteren naar twee bigint
of float8
ten behoeve van de index. Maar geen van deze casts is gedefinieerd in standaard Postgres.
Ik heb een
Om gebruik te kunnen maken van deze functionele index, moeten query's overeenkomen met die expressie. U kunt de afkorting
Terzijde:gebruik geen
De vraag is:waarom heb je de GiST-index nodig. De beste oplossing hangt af van het doel."value"::text
. gebruiken in zoekopdrachten (maar niet in de indexdefinitie zonder meer haakjes toe te voegen).value
als kolomnaam is het een gereserveerd woord in standaard SQL .