Query processing

Planner enable flags

Also called: enable_seqscan, enable_indexscan, enable_hashjoin

The enable_* settings (enable_seqscan, enable_indexscan, enable_hashjoin, and friends) let you discourage a particular strategy. Turning one off does not truly forbid it, it adds a large penalty to that path's cost so the planner picks something else if it can.

What this means

The enable_* switches (enable_seqscan, enable_indexscan, and friends) don't truly ban a strategy, they just pile a huge cost penalty onto it so the planner avoids it whenever it has an alternative. They're mainly a debugging tool: turn one off to see what plan Postgres would reach for instead.

Why it matters operationally

They are diagnostic tools: flip one off, re-run EXPLAIN, and see what the planner would otherwise have chosen and at what cost. That tells you why a strategy won. They are not meant for production, the right fix is usually better statistics or tuned cost constants, not a permanently disabled scan type.

Related & next

← All glossary terms · GUC reference · Error catalog