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

Index GIN PostgreSQL sur un tableau d'uuid

Remarque : cette réponse est obsolète car elle fait maintenant partie d'un PostgreSQL standard, voir l'autre réponse de tbussmann (que vous devriez voter pour).

Réponse originale :

Cela peut être fait en utilisant la classe d'opérateur suivante :

CREATE OPERATOR CLASS _uuid_ops DEFAULT 
  FOR TYPE _uuid USING gin AS 
  OPERATOR 1 &&(anyarray, anyarray), 
  OPERATOR 2 @>(anyarray, anyarray), 
  OPERATOR 3 <@(anyarray, anyarray), 
  OPERATOR 4 =(anyarray, anyarray), 
  FUNCTION 1 uuid_cmp(uuid, uuid), 
  FUNCTION 2 ginarrayextract(anyarray, internal, internal), 
  FUNCTION 3 ginqueryarrayextract(anyarray, internal, smallint, internal, internal, internal, internal), 
  FUNCTION 4 ginarrayconsistent(internal, smallint, anyarray, integer, internal, internal, internal, internal), 
  STORAGE uuid;

Crédits à ceci pour m'avoir orienté dans la bonne direction.

La documentation pertinente se trouve dans Interfaçage des extensions aux index , en particulier la stratégie de l'opérateur et les numéros de fonction pour GIN y sont décrits.