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