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) 索引?
我正在使用 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) 索引?