具有唯一约束的Postgres哈希索引

时间:2017-05-31 01:02:50

标签: postgresql unique

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

为什么哈希索引不允许唯一约束? 有办法绕过这个吗?

2 个答案:

答案 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 =);