diff options
author | Neil Conway <neilc@samurai.com> | 2005-05-23 01:50:01 +0000 |
---|---|---|
committer | Neil Conway <neilc@samurai.com> | 2005-05-23 01:50:01 +0000 |
commit | 1b41965d5d8b461c22c28ab0f5f8368494da04d9 (patch) | |
tree | f62b04dd5850e1c9b842b444452dd0766d9dd56a | |
parent | dd2894dfd6838f5b4cc4c60e802c2b2aff8c0830 (diff) |
Remove some verbiage describing how min() and max() are slow when applied
to the entire table: as of current sources, they are no longer slow
provided there is an index on the column.
-rw-r--r-- | doc/src/sgml/func.sgml | 51 |
1 files changed, 6 insertions, 45 deletions
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 8cb4bb72b21..67d212ed3f9 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -1,5 +1,5 @@ <!-- -$PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.249 2005/05/23 01:29:54 neilc Exp $ +$PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.250 2005/05/23 01:50:01 neilc Exp $ PostgreSQL documentation --> @@ -7317,55 +7317,16 @@ SELECT b1 = ANY((SELECT b2 FROM t2 ...)) FROM t1 ...; <note> <para> Users accustomed to working with other SQL database management - systems may be surprised by the performance characteristics of - certain aggregate functions in - <productname>PostgreSQL</productname> when the aggregate is - applied to the entire table (in other words, no - <literal>WHERE</literal> clause is specified). In particular, a - query like + systems may be surprised by the performance of the + <function>count</function> aggregate when it is applied to the + entire table. A query like: <programlisting> -SELECT min(col) FROM sometable; +SELECT count(*) FROM sometable; </programlisting> will be executed by <productname>PostgreSQL</productname> using a - sequential scan of the entire table. Other database systems may - optimize queries of this form to use an index on the column, if - one is available. Similarly, the aggregate functions - <function>max()</function> and <function>count()</function> always - require a sequential scan if applied to the entire table in - <productname>PostgreSQL</productname>. - </para> - - <para> - <productname>PostgreSQL</productname> cannot easily implement this - optimization because it also allows for user-defined aggregate - queries. Since <function>min()</function>, - <function>max()</function>, and <function>count()</function> are - defined using a generic API for aggregate functions, there is no - provision for special-casing the execution of these functions - under certain circumstances. - </para> - - <para> - Fortunately, there is a simple workaround for - <function>min()</function> and <function>max()</function>. The - query shown below is equivalent to the query above, except that it - can take advantage of a B-tree index if there is one present on - the column in question. -<programlisting> -SELECT col FROM sometable ORDER BY col ASC LIMIT 1; -</programlisting> - A similar query (obtained by substituting <literal>DESC</literal> - for <literal>ASC</literal> in the query above) can be used in the - place of <function>max()</function>. - </para> - - <para> - Unfortunately, there is no similarly trivial workaround that can - be used to improve the performance of <function>count()</function> - when applied to the entire table. + sequential scan of the entire table. </para> </note> - </sect1> |