如何在postgresql gist索引类型中使用uuid?

我不能直接使用uist和gist索引
CREATE INDEX idx_leaderboads_values_gist
  ON leaderboard_entry
  USING gist
  (id_leaderboard,value);

我收到了这个错误

ERROR: data type uuid has no default operator class for access method
“gist”

HINT: You must specify an operator class for the index or define a
default operator class for the data type.

Postgres 10或更新

btree_gist现在也涵盖了数据类型uuid,如Paul commented.(以及其他一些数据类型,非常类似于枚举类型.)

现在您需要做的是:每个数据库安装一次扩展:

CREATE EXTENSION btree_gist;

然后你的索引应该工作.

有关:

> Exclusion constraint on a bitstring column with bitwise AND operator
> Creating multicolumn index in PostgreSQL,containing both scalar and array columns

Postgres 9.6或更高版本

(原始答案.)
通常我建议使用附加模块btree_gist,但uuid型不在其中.

理论上,由于UUID是128位数量(per documentation),因此最有效的方法是将其转换为两个bigint或float8以用于索引.但是这些演员阵容都没有在标准的Postgres中定义.

我找到了stab in that direction in the pqsql-hackers list,但似乎没有成功.

剩下的选项是文本表示的函数GiST索引:

CREATE INDEX idx_leaderboads_values_gist
ON leaderboard_entry USING gist (id_leaderboard,cast("value" AS text));

要使用此功能索引,查询必须与该表达式匹配.您可以在查询中使用简写“value”:: text(但不能在索引定义中使用,而不添加更多括号).

旁白:不要使用值作为列名,它是reserved word in standard SQL.

问题是:为什么需要GiST索引.最好的解决方案取决于目标.

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...