enable_indexonlyscan
是一个 配置参数,用于确定优化器是否应使用仅索引扫描。
enable_indexonlyscan
在 PostgreSQL 9.2 中添加。
默认
enable_indexonlyscan
的默认值为:on。
用法
请注意,如果 enable_indexscan
被禁用,enable_indexonlyscan
也将被禁用。
按 PostgreSQL 版本详细信息
enable_indexonlyscan (PostgreSQL 19)
设置 |
开启 |
单位 |
|
类别 |
查询调优 / 规划器方法配置 |
简短描述 |
启用优化器使用仅索引扫描计划。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
开启 |
重置值 |
开启 |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:enable_indexonlyscan
enable_indexonlyscan (PostgreSQL 18)
设置 |
开启 |
单位 |
|
类别 |
查询调优 / 规划器方法配置 |
简短描述 |
启用优化器使用仅索引扫描计划。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
开启 |
重置值 |
开启 |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:enable_indexonlyscan
enable_indexonlyscan (PostgreSQL 17)
设置 |
开启 |
单位 |
|
类别 |
查询调优 / 规划器方法配置 |
简短描述 |
启用优化器使用仅索引扫描计划。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
开启 |
重置值 |
开启 |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:enable_indexonlyscan
enable_indexonlyscan (PostgreSQL 16)
设置 |
开启 |
单位 |
|
类别 |
查询调优 / 规划器方法配置 |
简短描述 |
启用优化器使用仅索引扫描计划。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
开启 |
重置值 |
开启 |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:enable_indexonlyscan
enable_indexonlyscan (PostgreSQL 15)
设置 |
开启 |
单位 |
|
类别 |
查询调优 / 规划器方法配置 |
简短描述 |
启用优化器使用仅索引扫描计划。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
开启 |
重置值 |
开启 |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:enable_indexonlyscan
enable_indexonlyscan (PostgreSQL 14)
设置 |
开启 |
单位 |
|
类别 |
查询调优 / 规划器方法配置 |
简短描述 |
启用优化器使用仅索引扫描计划。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
开启 |
重置值 |
开启 |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:enable_indexonlyscan
enable_indexonlyscan (PostgreSQL 13)
设置 |
开启 |
单位 |
|
类别 |
查询调优 / 规划器方法配置 |
简短描述 |
启用优化器使用仅索引扫描计划。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
开启 |
重置值 |
开启 |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:enable_indexonlyscan
enable_indexonlyscan (PostgreSQL 12)
设置 |
开启 |
单位 |
|
类别 |
查询调优 / 规划器方法配置 |
简短描述 |
启用优化器使用仅索引扫描计划。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
开启 |
重置值 |
开启 |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:enable_indexonlyscan
enable_indexonlyscan (PostgreSQL 11)
设置 |
开启 |
单位 |
|
类别 |
查询调优 / 规划器方法配置 |
简短描述 |
启用优化器使用仅索引扫描计划。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
开启 |
重置值 |
开启 |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:enable_indexonlyscan
enable_indexonlyscan (PostgreSQL 10)
设置 |
开启 |
单位 |
|
类别 |
查询调优 / 规划器方法配置 |
简短描述 |
启用优化器使用仅索引扫描计划。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
开启 |
重置值 |
开启 |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:enable_indexonlyscan
enable_indexonlyscan (PostgreSQL 9.6)
设置 |
开启 |
单位 |
|
类别 |
查询调优 / 规划器方法配置 |
简短描述 |
启用优化器使用仅索引扫描计划。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
开启 |
重置值 |
开启 |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:enable_indexonlyscan
enable_indexonlyscan (PostgreSQL 9.5)
设置 |
开启 |
单位 |
|
类别 |
查询调优 / 规划器方法配置 |
简短描述 |
启用优化器使用仅索引扫描计划。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
开启 |
重置值 |
开启 |
源文件 |
|
源行 |
|
需要重启 |
false |
文档:enable_indexonlyscan
enable_indexonlyscan (PostgreSQL 9.4)
设置 |
开启 |
单位 |
|
类别 |
查询调优 / 规划器方法配置 |
简短描述 |
启用优化器使用仅索引扫描计划。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
开启 |
重置值 |
开启 |
源文件 |
|
源行 |
|
文档:enable_indexonlyscan
enable_indexonlyscan (PostgreSQL 9.3)
设置 |
开启 |
单位 |
|
类别 |
查询调优 / 规划器方法配置 |
简短描述 |
启用优化器使用仅索引扫描计划。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
开启 |
重置值 |
开启 |
源文件 |
|
源行 |
|
文档:enable_indexonlyscan
enable_indexonlyscan (PostgreSQL 9.2)
设置 |
开启 |
单位 |
|
类别 |
查询调优 / 规划器方法配置 |
简短描述 |
启用优化器使用仅索引扫描计划。 |
扩展描述 |
|
上下文 |
user |
变量类型 |
bool |
来源 |
默认 |
最小值 |
|
最大值 |
|
枚举值 |
|
启动值 |
开启 |
重置值 |
开启 |
源文件 |
|
源行 |
|
文档:enable_indexonlyscan
变更历史
示例
enable_indexonlyscan
的基本用法示例
postgres=# CREATE TABLE foo (id INT NOT NULL PRIMARY KEY);
CREATE TABLE
postgres=# INSERT INTO foo VALUES(generate_series(1,10000));
INSERT 0 10000
postgres=# ANALYZE foo;
ANALYZE
postgres=# EXPLAIN SELECT * FROM foo WHERE id BETWEEN 99 AND 3024;
QUERY PLAN
------------------------------------------------------------------------------
Index Only Scan using foo_pkey on foo (cost=0.29..111.81 rows=2926 width=4)
Index Cond: ((id >= 99) AND (id <= 3024))
(2 rows)
将 enable_indexonlyscan
设置为 off
postgres=# SET enable_indexonlyscan to off;
SET
postgres=# EXPLAIN SELECT * FROM foo WHERE id BETWEEN 99 AND 3024;
QUERY PLAN
-------------------------------------------------------------------------
Index Scan using foo_pkey on foo (cost=0.29..111.81 rows=2926 width=4)
Index Cond: ((id >= 99) AND (id <= 3024))
(2 rows)
此处优化器已回退到索引扫描。有关当索引扫描也禁用时的相同查询的示例输出,请参见 enable_indexscan
。