在 pg v11 和 v12 上 常见测试用例

复制代码
CREATE TABLE rel ( a bigint NOT NULL, b bigint NOT NULL );  ALTER TABLE rel ADD CONSTRAINT rel_pkey PRIMARY KEY (a, b);  CREATE INDEX rel_b_idx ON rel (b);  \d rel Table "public.rel" Column | Type | Collation | Nullable | Default--------+--------+-----------+----------+---------a | bigint | | not null |  b | bigint | | not null |  Indexes: "rel_pkey" PRIMARY KEY, btree (a, b) "rel_b_idx" btree (b)
复制代码
  • 它确保“a”和“b” 两字段的每种组合最多有一个条目。
  • 它可以加快与给定“b”相关的所有“a”的搜索速度。

加入测试数据

复制代码
INSERT INTO rel (a, b)    SELECT i, i / 10000   FROM generate_series(1, 20000000) AS i;  /* 收集统计信息 */ VACUUM (ANALYZE) rel;
复制代码

 

B树索引提高1:插入很多重复的索引和数值
当我们比较的b列索引的大小的第一个区别是显而易见的:

复制代码
v11: \di+ rel_b_idx                            List of relations  Schema |    Name     | Type  |  Owner   | Table |  Size  | Description  --------+-------------+-------+----------+-------+--------+------------- public | rel_b_idx |