介绍 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