PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment utiliser uuid avec le type d'index postgresql gist ?

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 :

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 "value"::text dans les requêtes (mais pas dans la définition de l'index sans ajouter plus de parenthèses).

A part :ne pas utiliser value comme nom de colonne, c'est un mot réservé en SQL standard .

La question est :pourquoi avez-vous besoin de l'index GiST. La meilleure solution dépend de l'objectif.