Postgres 9.6仅索引扫描

Or *_*uan 1 postgresql postgresql-9.6

Postgres有新版本 9.6 - 我已阅读有关仅索引扫描的文档.我知道postgres表的堆,我知道部分索引(或一般的索引)是如何工作的.我只是不明白索引的好处.

问题

  • 真的改变了什么?我们没有使用仅索引扫描吗?
  • 我应该如何以及何时使用它们来获得最佳效益?

非相关背景: 我正在处理具有6B行的表,在生产环境中有很多INSERTs和SELECTs

a_h*_*ame 6

从发行说明中引用

当索引的WHERE子句引用未编制索引的列时,允许在部分索引上使用仅索引扫描

(强调我的)

所以在9.5和以下索引之前不能仅用于索引扫描:

create index on foo (col1, col2)
   where col3 = 42;
Run Code Online (Sandbox Code Playgroud)

因为col3不是索引列的一部分.这在9.6中已经改变