enable_indexscan 是一个 配置参数,用于确定规划器是否应使用索引扫描。
enable_indexscan 在 PostgreSQL 7.0 中添加。
默认
enable_indexscan 的默认值为:on。
用法
请注意,如果 enable_indexscan 被禁用,enable_indexonlyscan 也将被禁用,即使它被设置为 on。
按 PostgreSQL 版本详细信息
enable_indexscan (PostgreSQL 19)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: enable_indexscan
enable_indexscan (PostgreSQL 18)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: enable_indexscan
enable_indexscan (PostgreSQL 17)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: enable_indexscan
enable_indexscan (PostgreSQL 16)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: enable_indexscan
enable_indexscan (PostgreSQL 15)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: enable_indexscan
enable_indexscan (PostgreSQL 14)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: enable_indexscan
enable_indexscan (PostgreSQL 13)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: enable_indexscan
enable_indexscan (PostgreSQL 12)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: enable_indexscan
enable_indexscan (PostgreSQL 11)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: enable_indexscan
enable_indexscan (PostgreSQL 10)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: enable_indexscan
enable_indexscan (PostgreSQL 9.6)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: enable_indexscan
enable_indexscan (PostgreSQL 9.5)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: enable_indexscan
enable_indexscan (PostgreSQL 9.4)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档: enable_indexscan
enable_indexscan (PostgreSQL 9.3)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档: enable_indexscan
enable_indexscan (PostgreSQL 9.2)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档: enable_indexscan
enable_indexscan (PostgreSQL 9.1)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档: enable_indexscan
enable_indexscan (PostgreSQL 9.0)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档: enable_indexscan
enable_indexscan (PostgreSQL 8.4)
| 设置 | 开启 |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | 开启 |
| 重置值 | 开启 |
| 源文件 | |
| 源行 |
文档: enable_indexscan
enable_indexscan (PostgreSQL 8.3)
| 设置 | |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 |
文档: enable_indexscan
enable_indexscan (PostgreSQL 8.2)
| 设置 | |
| 单位 | |
| 类别 | 查询调优 / 规划器方法配置 |
| 简短描述 | 启用规划器使用索引扫描计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 |
文档: enable_indexscan
变更历史
- PostgreSQL 7.0
- 添加于 (提交 b1577a7c)
示例
enable_indexscan 的基本用法示例
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; 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_indexonlyscan 已被禁用,以强制执行索引扫描。
将 enable_indexscan 设置为 off
postgres=# EXPLAIN SELECT * FROM foo WHERE id BETWEEN 99 AND 3024;
QUERY PLAN
---------------------------------------------------------------------------
Bitmap Heap Scan on foo (cost=66.28..155.17 rows=2926 width=4)
Recheck Cond: ((id >= 99) AND (id <= 3024))
-> Bitmap Index Scan on foo_pkey (cost=0.00..65.55 rows=2926 width=0)
Index Cond: ((id >= 99) AND (id <= 3024))
(4 rows)
参考资料
- PostgreSQL 文档: enable_indexscan
