random_page_cost v17
Parameter type: Floating point
Default value: 4
Range: 0 to 1.79769e+308
Minimum scope of effect: Per session
When value changes take effect: Immediate
Required authorization to activate: Session user
Sets the planner's estimate of the cost of a nonsequentially fetched disk page. You can override the default for a particular tablespace by setting the tablespace parameter of the same name. See ALTER TABLESPACE
in the PostgreSQL core documentation.
Reducing this value relative to seq_page_cost
causes the system to prefer index scans. Raising it makes index scans look relatively more expensive. You can raise or lower both values together to change the importance of disk I/O costs relative to CPU costs, which are described by the cpu_tuple_cost
and cpu_index_tuple_cost
parameters.
The default value assumes very little caching, so it's often a good idea to reduce it. Even if your database is significantly larger than physical memory, you might want to try setting this parameter to 2 (that is, lower than the default) to see whether you get better query plans that way. If your database fits entirely in memory, you can lower this value much more, for example, to 0.1.
Although the system allows it, never set random_page_cost
less than seq_page_cost
. However, setting them equal or very close to equal makes sense if the database fits mostly or entirely in memory, since in that case there's no penalty for touching pages out of sequence. Also, in a heavily cached database, lower both values relative to the CPU parameters, since the cost of fetching a page already in RAM is much smaller than it normally is.