PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Índice GIN do PostgreSQL na matriz de uuid


Observação: esta resposta é obsoleta, pois agora faz parte de um PostgreSQL padrão, veja a outra resposta de tbussmann (que você deve votar).

Resposta original:

Isso pode ser feito usando a seguinte classe de operadores:
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éditos para este por me apontar na direção certa.

A documentação relevante está em Interface de extensões para índices , em particular a estratégia do operador e os números de função para GIN são descritos lá.