select open change scope Open full search

PG.CENTER connects PostgreSQL documentation, reference, and ecosystem knowledge. Maintained by Pigsty.

CONFIGURATION / QUERY TUNING

Controls the initial value of the random number generator used by GEQO to select random paths through the join order search space.

Type
real
Context
user
Measured default
0
Unit
Metadata snapshot
18

Definition PG 18 manual

Controls the initial value of the random number generator used by GEQO to select random paths through the join order search space. The value can range from zero (the default) to one. Varying the value changes the set of join paths explored, and may result in a better or worse best path being found.

Measured default history
Version intervalDefault
9.0 – 190
Analysis & operational context

Authored guidance from the GUC source snapshot; the version-specific manual above is the definition reference. View source ↗

How it works

It seeds GEQO's random path selection. Changing it explores a different subset of join orders without changing table data or statistics.

GEQO trades bounded planning time for a heuristic search that can miss the best join order. It still costs scan and join paths with the ordinary planner cost model after constructing candidates.

The setting is read during planning, and GEQO's randomized search means plan quality can vary with seed and search budget. Collapse limits can change the number of relations exposed to the join search and therefore whether the threshold is crossed. Its user context permits session- or transaction-local changes; newly performed or newly planned work sees the value.

Operational considerations

Judging plan quality from one randomized GEQO run.

Changing a GEQO knob without accounting for geqo_threshold and collapse limits.

Spending much more planning CPU for a marginal or unstable execution-time gain.

Assuming GEQO guarantees the globally best join order.

Workload guidance

OLAP: For recurring many-table reports, test geqo_seed with multiple geqo_seed values and compare planning plus execution time. A single lucky seed is not a stable production policy.

OLTP: Keep geqo_seed at its upstream default unless planning time for many-way joins is measured as a problem. Prefer simplifying generated SQL or fixing join estimates before expanding a randomized search budget globally.

SMALL: Avoid increasing geqo_seed in ways that consume disproportionate planning CPU on a small host. The default adaptive values are safer than copying a large-system GEQO budget.

Related entries

Further reading

Definition snapshot: english-manuals:2b5c73de3a9a5954fe7b8429a8c… · English manual source