Postgres 10 ou version ultérieure
btree_gist
couvre désormais également le type de données uuid
, comme Paul a commenté
. (Et quelques autres types de données, remarquablement tous enum
type.)
Il ne vous reste plus qu'à installer l'extension une fois par base de données :
CREATE EXTENSION btree_gist;
Ensuite, votre index devrait fonctionner.
Connexe :
- Contrainte d'exclusion sur une colonne de chaîne de bits avec opérateur ET au niveau du bit
- Création d'un index multicolonne dans PostgreSQL, contenant à la fois des colonnes scalaires et des tableaux
Postgres 9.6 ou version antérieure
(Réponse originale.)
Normalement, je suggérerais le module supplémentaire btree_gist
, mais le type uuid
n'est pas couvert par celui-ci.
En théorie, puisqu'un UUID est a 128-bit quantity
(par documentation
), le moyen le plus efficace serait de le convertir en deux bigint
ou float8
aux fins de l'index. Mais aucun de ces casts n'est défini dans Postgres standard.
J'ai trouvé un
Pour utiliser cet index fonctionnel, les requêtes doivent correspondre à cette expression. Vous pouvez utiliser le raccourci
A part :ne pas utiliser
La question est :pourquoi avez-vous besoin de l'index GiST. La meilleure solution dépend de l'objectif."value"::text
dans les requêtes (mais pas dans la définition de l'index sans ajouter plus de parenthèses).value
comme nom de colonne, c'est un mot réservé en SQL standard .