了解更多Greenplum技术干货,欢迎访问Greenplum中文社区网站
复合索引,也称作多字段索引,是指建立在表的多个字段上的索引,它是数据库系统中广泛支持的索引使用方式,Greenplum也不例外。在之前的文章中,我们已经介绍了Greenplum的默认索引——B树索引。本文将对Greenplum中的复合索引以及相关的最佳实践进行简要介绍。《深入浅出Greenplum内核》系列直播正在进行中,本周五Greenplum原厂内核研发张桓将为大家介绍Greenplum排序算法,欢迎关注。
建立测试数据
首先我们建立一张测试表:student,它有4个字段:
-
id,学生唯一编号
-
score,考试分数,0~100之间
-
class,学生班级,1~10之间
-
comment,学生评价,本示例中插入一个随机字符串
article=# create table student (id int, score int, class int, comment varchar(128)) distributed by (id);
CREATE TABLE
随后插入约2千万的测试数据,其中少量学生不及格(第2个insert语句):
article=# insert into student (id, score, class, comment) SELECT g, random() * 40 + 60, random() * 10 + 1, md5(g::text) FROM generate_series(1,20000000) as g;
INSERT 0 20000000
article=# insert into student (id, score, class, comment) SELECT g, random() * 60, random() * 10 + 1, md5(g::text) FROM generate_series(20000001,20010000) as g;
INSERT 0 10000
然后在(scor