2025年9月25日: PostgreSQL 18 发布!

介绍 HypoPG,PostgreSQL 的假设索引

发布于 2015-06-24,作者 Dalibo

巴黎,2015 年 6 月 24 日

DALIBO 自豪地发布 HypoPG 的第一个版本,这是一个为 PostgreSQL 添加假设索引的扩展。

假设索引是一种磁盘上不存在的索引。因此,它的创建几乎是瞬时的,并且不会增加任何 IO 成本,无论是在创建时还是在维护时。其目标显然是在花费过多时间、I/O 和磁盘空间来创建索引之前,检查该索引是否有用。

有了这个扩展,你可以创建假设索引,然后使用 EXPLAIN 检查 PostgreSQL 是否会使用它们。

如果我在此之上有一个索引会怎样?

您是否曾想过一个索引会如何提高服务器的性能,但又无法负担创建它到磁盘上仅仅是为了尝试的成本?

HypoPG 可以这样帮助您

首先,让我们创建一个简单的用例

# CREATE TABLE testable 
#   AS SELECT id, 'line ' || id val 
#   FROM generate_series(1,1000000) id;
# ANALYZE testable ;

现在,让我们安装 HypoPG 并在这个新表上创建一个假设索引

# CREATE EXTENSION hypopg;
# SELECT hypopg_create_index('CREATE INDEX ON testable (id)');

您现在可以使用 EXPLAIN (不带 ANALYZE) 来检查 PostgreSQL 是否会使用该索引!

# EXPLAIN SELECT * FROM testable WHERE id = 1000 ;
                                          QUERY PLAN
-----------------------------------------------------------------------------------------------
 Index Scan using 41079_btree_testable_id on testable  (cost=0.05..8.07 rows=1 width=15)
   Index Cond: (id = 1000)
(2 rows)

太棒了!如果 'id' 列上有索引,PostgreSQL 会利用它!

链接

关于 DALIBO

DALIBO 是法国领先的 PostgreSQL 公司,自 2005 年以来一直为客户提供支持、培训和咨询。该公司通过多种方式为 PostgreSQL 社区做出贡献,包括:代码、文章、翻译、免费会议和研讨会。

查看 DALIBO 的开源项目:http://dalibo.github.io

http://www.dalibo.com