《Greenplum企业应用实战》一3.5 索引

本节书摘来自华章出版社《Greenplum企业应用实战》一书中的第3章,第3.5节,作者 何勇 陈晓峰,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.5 索引

Greenplum支持B-tree、bitmap、函数索引等,在这里我们简单介绍一下B-tree索引:

testDB=# create table test_index_1 as select * from test_distribute_1;
SELECT 5000000

testDB=# select id,flag from test_index_1 where id=100;
 id  | flag 
-----+------
 100 |    0
(1 row)
Time: 2606.125 ms

接下来我们在flag字段上创建bitmap索引:

testDB=# CREATE INDEX test_index_1_idx ON test_index_1 (id);
CREATE INDEX
Time: 34997.881 ms
再次查看执行计划,采用了索引扫描,如下所示。
testDB=# explain select id,flag from test_index_1 where id=100;
                                  QUERY PLAN                                          
-------------------------------------------------------------------------------
 Gather Motion 1:1  (slice1; segments: 1)  (cost=0.00..200.84 rows=1 width=12)
   ->  Index Scan using test_index_1_idx on test_index_1  (cost=0.00..200.84 rows=1 width=12)
         Index Cond: id = 100
(3 rows)

建好索引后,再次执行上面的查询语句,有索引的情况下,用了23毫秒,相比未创建索引时2606毫秒,有了质的提升。
另外,表关联字段上的索引和appen-only压缩表上的索引都能带来较大的性能提升,虽然在数据库应用中,索引的应用场景不多,但是读者仍然可以结合实际的场景来运用索引。

上一篇:SAP Spartacus layout设计原理


下一篇:[20140505]删除直方图_delete histogram