Configuration parameter

enable_indexonlyscan — PostgreSQL configuration parameter

Category Query Planning Default on

Enables or disables the query planner’s use of index-only-scan plan types (see indexes_index_only_scans).

At a glance

Property Value
Parameter enable_indexonlyscan
Category Query Planning
Default on
Value type boolean (on/off)
Change scope Per-session (SET)
Available in PostgreSQL 12, 13, 14, 15, 16, 17, 18, 19 (added in 12)

What it does

Enables or disables the query planner’s use of index-only-scan plan types (see indexes_index_only_scans). The default is on. The enable_indexscan setting must also be enabled to have the query planner consider index-only-scans.

(Description quoted from the official PostgreSQL documentation.)

How to apply a change

Can be set per session with SET, per role/database with ALTER ROLE/DATABASE ... SET, or globally in postgresql.conf.

Inspect the current value and source with SHOW enable_indexonlyscan; or SELECT name, setting, unit, context, source FROM pg_settings WHERE name = 'enable_indexonlyscan';.

Tuning guidance

This is a diagnostic switch, not a production tuning knob. Turn it off briefly (per session) to confirm why the planner avoids or prefers a plan, then leave it on. Forcing it off in production masks bad estimates instead of fixing them — fix statistics, costs or indexes instead.

Reference

PostgreSQL documentation — enable_indexonlyscan.

Keep going

Related & next steps

Was this helpful?

← All configuration parameters