Postgres 10 o più recente
btree_gist
ora copre anche il tipo di dati uuid
, come Paolo ha commentato
. (E alcuni altri tipi di dati, in particolare tutti enum
tipi.)
Ora tutto ciò che devi fare:installare l'estensione una volta per database:
CREATE EXTENSION btree_gist;
Allora il tuo indice dovrebbe funzionare.
Correlati:
- vincolo di esclusione su una colonna bitstring con operatore AND bit per bit
- Creazione di un indice multicolonna in PostgreSQL, contenente colonne scalari e array
Postgres 9.6 o precedente
(Risposta originale.)
Normalmente suggerirei il modulo aggiuntivo btree_gist
, ma il tipo uuid
è non coperto da esso.
In teoria, poiché un UUID è a 128-bit quantity
(per documentazione
), il modo più efficiente sarebbe convertirlo in due bigint
o float8
ai fini dell'indice. Ma nessuno di questi calchi è definito in Postgres standard.
Ho trovato un
Per utilizzare questo indice funzionale, le query devono corrispondere a tale espressione. Puoi usare l'abbreviazione
A parte:non utilizzare
La domanda è:perché ti serve l'indice GiST. La soluzione migliore dipende dall'obiettivo."value"::text
nelle query (ma non nella definizione dell'indice senza aggiungere altre parentesi).value
come nome della colonna è una parola riservata in SQL standard .