PostgreSQL 11 新特性解读 : Indexs With Include Columns

  • 时间:
  • 浏览:1

此形状主要用途和使用场景:

首先验证第一点:不支持Btree索引的字段支持使用INCLUDE最好的办法索引,创建测试表。

在(a,user_info) 字段上创建 btree 索引,如下:

创建测试表并插入200万数据,如下:

加入 name 字段后,不走 Index Only Scan,如下。

创建索引时使用 INCLUDE(name),如下

PostgreSQL 11 版本索引方面另另一个多显著的新形状是创建索引时支持 INCLUDE COLUMNS ,语法如下

最后推荐和张文升一齐编写的《PostgreSQL实战》,本书基于PostgreSQL 10 编写,共18章,重点介绍SQL高级形状、并行查询、分区表、物理复制、逻辑复制、备份恢复、高可用、性能优化、PostGIS等,含有少量实战用例!

where条件中只含有a,查询a字段,以下SQL走了 Index Only Scan。

Allow indexes to INCLUDE columns that are not part of the unique constraint but are available for index-only scans (Anastasia Lubennikova, Alexander Korotkov, Teodor Sigaev)

以上创建索引报错,是可能 json 不支持 btree 索引。

在字段a上创建索引,如下:

链接:https://item.jd.com/12405774.html

以上描述颇为费力,以下通过实例演示。

This is also useful for including columns that dont have btree support

使用 INCLUDE 最好的办法创建索引成功,如下:

再次执行查询,走了 Index Only Scan

或许有一群人 问以下有四种 索引最好的办法有啥区别? 这俩 问题欢迎一群人 留言讨论。

只查询name字段,也走了 Index Only Scan,如下

加入 name 后走了 Index Scan using ,根据索引回表查询name字段。