Postgres 10 ou mais recente
btree_gist agora também abrange o tipo de dados
uuid
, como Paul comentou
. (E alguns outros tipos de dados, notavelmente todos os enum
tipos.) Agora tudo que você precisa fazer:instalar a extensão uma vez por banco de dados:
CREATE EXTENSION btree_gist;
Então seu índice deve funcionar.
Relacionado:
- Restrição de exclusão em uma coluna bitstring com operador AND bit a bit
- Criando índice de várias colunas no PostgreSQL, contendo colunas escalares e de matriz
Postgres 9.6 ou anterior
(Resposta original.)
Normalmente eu sugeriria o módulo adicional btree_gist , mas o tipo
uuid
é não coberto por ela. Em teoria, como um UUID é
a 128-bit quantity
(por documentação
), a maneira mais eficiente seria convertê-lo em dois bigint
ou float8
para efeito de índice. Mas nenhum desses elencos é definido no Postgres padrão. Encontrei um
Para fazer uso desse índice funcional, as consultas devem corresponder a essa expressão. Você pode usar a abreviação
"value"::text
nas consultas (mas não na definição do índice sem adicionar mais parênteses). Além:não use
value
como nome da coluna, é uma palavra reservada no SQL padrão . A pergunta é:por que você precisa do índice GiST. A melhor solução depende do objetivo.