Home Explore Blog CI



postgresql

87th chunk of `doc/src/sgml/config.sgml`
8d3714bf96d40b94bc0003689e3e1939b93d94ea9a83c4df0000000100000fa2
 number of nodes whose memory usage is restricted by
        <varname>work_mem</varname> appearing in the final plan can increase
        linearly according to the number of partitions being scanned.  This
        can result in a large increase in overall memory consumption during
        the execution of the query.  Query planning also becomes significantly
        more expensive in terms of memory and CPU.  The default value is
        <literal>off</literal>.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry id="guc-enable-presorted-aggregate" xreflabel="enable_presorted_aggregate">
      <term><varname>enable_presorted_aggregate</varname> (<type>boolean</type>)
      <indexterm>
       <primary><varname>enable_presorted_aggregate</varname> configuration parameter</primary>
      </indexterm>
      </term>
      <listitem>
       <para>
        Controls if the query planner will produce a plan which will provide
        rows which are presorted in the order required for the query's
        <literal>ORDER BY</literal> / <literal>DISTINCT</literal> aggregate
        functions.  When disabled, the query planner will produce a plan which
        will always require the executor to perform a sort before performing
        aggregation of each aggregate function containing an
        <literal>ORDER BY</literal> or <literal>DISTINCT</literal> clause.
        When enabled, the planner will try to produce a more efficient plan
        which provides input to the aggregate functions which is presorted in
        the order they require for aggregation.  The default value is
        <literal>on</literal>.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry id="guc-enable_self_join_elimination" xreflabel="enable_self_join_elimination">
      <term><varname>enable_self_join_elimination</varname> (<type>boolean</type>)
      <indexterm>
       <primary><varname>enable_self_join_elimination</varname> configuration parameter</primary>
      </indexterm>
      </term>
      <listitem>
       <para>
        Enables or disables the query planner's optimization which analyses
        the query tree and replaces self joins with semantically equivalent
        single scans.  Takes into consideration only plain tables.
        The default is <literal>on</literal>.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry id="guc-enable-seqscan" xreflabel="enable_seqscan">
      <term><varname>enable_seqscan</varname> (<type>boolean</type>)
      <indexterm>
       <primary>sequential scan</primary>
      </indexterm>
      <indexterm>
       <primary><varname>enable_seqscan</varname> configuration parameter</primary>
      </indexterm>
      </term>
      <listitem>
       <para>
        Enables or disables the query planner's use of sequential scan
        plan types. It is impossible to suppress sequential scans
        entirely, but turning this variable off discourages the planner
        from using one if there are other methods available. The
        default is <literal>on</literal>.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry id="guc-enable-sort" xreflabel="enable_sort">
      <term><varname>enable_sort</varname> (<type>boolean</type>)
      <indexterm>
       <primary><varname>enable_sort</varname> configuration parameter</primary>
      </indexterm>
      </term>
      <listitem>
       <para>
        Enables or disables the query planner's use of explicit sort
        steps. It is impossible to suppress explicit sorts entirely,
        but turning this variable off discourages the planner from
        using one if there are other methods available. The default
        is <literal>on</literal>.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry id="guc-enable-tidscan" xreflabel="enable_tidscan">
      <term><varname>enable_tidscan</varname> (<type>boolean</type>)
      <indexterm>
       <primary><varname>enable_tidscan</varname>

Title: Query Planning Configuration: Presorted Aggregates, Self-Join Elimination, Scan and Sort Options
Summary
This section covers boolean configuration parameters that affect query planning. It includes `enable_presorted_aggregate` (determines if the planner provides pre-sorted rows for ORDER BY/DISTINCT aggregates, defaults to on), `enable_self_join_elimination` (enables self-join replacement with single scans, defaults to on), `enable_seqscan` (discourages sequential scans, defaults to on), and `enable_sort` (discourages explicit sort steps, defaults to on).