Postgres 10正确支持哈希索引,我想使用哈希索引进行id查找(哈希索引的大小比btree小,理论上更快)。
我有一张桌子
create table t (id int);
create unique index on t using hash (id);
但我得到以下内容:
ERROR: access method "hash" does not support unique indexes
为什么哈希索引不允许唯一约束? 有办法绕过这个吗?
答案 0 :(得分:10)
The documentation不容置疑:
目前,只能将B树索引声明为唯一。
最近有一个discussion on the hackers list,结论是添加允许UNIQUE
哈希索引的功能并不简单。
答案 1 :(得分:2)
您可以使用排除约束来实现:
create table t (id int);
create index i on t using hash (id);
alter table t add constraint c exclude using hash (id with =);