如何在postgresql中创建位图索引? (它甚至有位图索引吗?)

时间:2015-08-20 07:45:59

标签: postgresql bitmap-index

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

CREATE BITMAP INDEX name  ON table (column);

2 个答案:

答案 0 :(得分:1)

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

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

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

的数据是最佳的

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

答案 1 :(得分:1)

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

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