5

我已经“谷歌搜索”了至少一个小时,但我无法找到如何在 postgresql 中创建位图索引,所以我的问题很简单,如何在 postgresql 中编写这个命令(来自 oracle)

CREATE BITMAP INDEX name  ON table (column);
4

2 回答 2

3

页面的位图是为每个查询动态创建的。它不会被缓存或重新使用,并在位图索引扫描结束时被丢弃。

提前创建页面位图是没有意义的,因为它的内容取决于查询谓词。

位图索引为列的每个可能值创建一个单独的位图(0 和 1 的序列),其中每个位对应于具有索引值的字符串。位图索引最适合位唯一值的数据(例如,性别字段)

PostgreSQL 不提供持久位图索引。但它可以在数据库中用于组合多个索引。PostgreSQL 扫描每个需要的索引并在内存中准备一个位图,给出报告为匹配该索引条件的表行的位置。然后根据查询的需要对位图进行 AND 和 OR 运算。最后,访问并返回实际的表行。

于 2017-09-24T16:31:18.957 回答
2

如果需要,可以将咆哮位图集成到 PostgreSQL 中。咆哮位图是压缩位图,其性能往往优于传统的压缩位图,例如 WAH、EWAH 或 Concise。

您可以使用此repo来集成咆哮位图。它包含 greenplum-db 中 Roaring 位图实现的改进分支。

于 2021-02-25T18:25:27.683 回答