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。