我想在Postgres 9.6数据库中添加一个包含UUID的GIN索引。从技术上讲,它是一个复合索引,并且使用btree_gin插件支持复合GIN。
我尝试使用以下语句创建索引:
CREATE EXTENSION btree_gin;
CREATE INDEX ix_tsv ON text_information USING GIN (client_id, text_search_vector);
但是我遇到了这个错误:
ERROR: data type uuid has no default operator class for access method "gin"
HINT: You must specify an operator class for the index or define a default operator class for the data type.
client_id
是数据类型 uuid
,而 text_search_vector
是一个 tsvector
。我认为组合/ btree_gin 因素实际上并不相关,因为我尝试在仅对单独的 client_id
创建索引时出现了相同的错误,但希望如果有解决方案,它也可以与复合索引一起使用。
我找到了PostgreSQL GIN index on array of uuid,它似乎表明这应该是可能的(如果可以做一个 UUID 数组,那么一个单独的 UUID 也肯定可以)。然而,那里的解决方案对我来说相当难懂 - 不太容易知道如何修改此解决方案以支持单个 UUID。
我希望找到一个不涉及将 UUID 转换为索引或另一列的其他类型的解决方案,因为我不想编写带有转换的专门查询(我们目前正在使用 Django ORM 生成查询)。