测试:
首先让该表有4个单列索引,查询时和组合索引效率也会大不一样,远远低于我们的组合索引。虽然此时有了4个索引,但只能用到其中的那个它认为似乎是最有效率的单列索引。
原始表结构
test=# \d t3_index
Table "public.t3_index"
Column | Type | Collation | Nullable | Default
--------+----------------------------+-----------+----------+---------
id | integer | | |
b | integer | | |
c | character varying(20 char) | | |
d | integer | | |
Indexes:
"t3_index_b" btree (b)
"t3_index_c" btree (c)
"t3_index_d" btree (d)
"t3_index_id" btree (id)
"t3_index_idxs" btree (id, b, c, d)
特点:
组合索引考虑最左原则,select的where条件,最左侧,必须用到的第一个列式组合索引的第一个列,才会走组合索引
创建
create index t3_index_idxs on t3_index (id,b,c,d);
分析结果: