Postgres 10 eller senare
btree_gist
täcker nu även datatypen uuid
, som Paul kommenterade
. (Och några andra datatyper, anmärkningsvärt nog alla enum
typer.)
Nu behöver du bara göra:installera tillägget en gång per databas:
CREATE EXTENSION btree_gist;
Då borde ditt index bara fungera.
Relaterat:
- Uteslutningsbegränsning på en bitsträngskolumn med bitvis AND-operator
- Skapar flerkolumnindex i PostgreSQL, som innehåller både skalära kolumner och matriskolumner
Postgres 9.6 eller äldre
(Originalt svar.)
Vanligtvis skulle jag föreslå tilläggsmodulen btree_gist
, men typen uuid
är inte omfattas av det.
I teorin, eftersom ett UUID är a 128-bit quantity
(per dokumentation
), skulle det mest effektiva sättet vara att konvertera den till två bigint
eller float8
för indexets syfte. Men ingen av dessa casts är definierade i standard Postgres.
Jag hittade en
För att kunna använda detta funktionsindex måste frågor matcha det uttrycket. Du kan använda förkortningen
Bortsett från:använd inte
Frågan är:varför behöver du GiST-indexet. Den bästa lösningen beror på målet."value"::text
i frågor (men inte i indexdefinitionen utan att lägga till fler parenteser).value
som kolumnnamn är det ett reserverat ord i standard SQL .