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
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.