PG10 中带条件的哈希索引

Hash indexes with conditions in PG10

我正在使用 Postgresql 10,并且我有以下结构的 table:

primary_key_id;....;foreign_key_id

foreign_key_id 字段是 bigint 升序非空字段,我在上面有一个哈希索引。它太大了,我决定创建两个条件为 foreign_key_id > <SOME_VALUE>foreign_key_id <= <SOME_VALUE> 的部分索引,并将带有“旧”数据的索引放入另一个 table 空间。

我已经成功创建了它们,但它们的大小几乎相同(17Gb vs 19Gb),但在新索引中必须有很少的数据。

我做错了什么?提前致谢。

这是一个从未修复过的 known bug。哈希索引估计初始大小,但在这样做时不考虑部分性质,因此高估了初始大小。为什么不直接使用默认的 (btree) 索引?