RE: Difference between count(1) and count(*)

  • From: "Bobak, Mark" <Mark.Bobak@xxxxxxxxxxxxxxx>
  • To: <oracle-l@xxxxxxxxxxxxx>
  • Date: Thu, 8 Jul 2004 10:36:31 -0400

Who needs count(*) or count(anything)?

Try this:
select -1/2+1/2*sqrt(1+8*sum(rownum)) from wi_cumulative;
 ;-)

(Shamelessly stolen from the AskTom thread, originally posted by Mikito =
Harakiri.)

-Mark

-----Original Message-----
From: oracle-l-bounce@xxxxxxxxxxxxx
[mailto:oracle-l-bounce@xxxxxxxxxxxxx]On Behalf Of Mladen Gogala
Sent: Thursday, July 08, 2004 10:32 AM
To: oracle-l@xxxxxxxxxxxxx
Subject: Re: Difference between count(1) and count(*)



On 07/08/2004 09:40:17 AM, Peter Miller wrote:
> 1,749,951 rows returned in every case
>=20
> count(rowid) - approx 3.2 secs
> count(obj#)  - approx 3.5 secs
> count(1)     - approx 3.6 secs
> count(*)     - approx 3.6 secs
> count(rownum)- approx 4.6 secs
> count(source)- approx 8.6 secs
>=20


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production
With the Partitioning option
JServer Release 9.2.0.5.0 - Production
=20
SQL> set timing on
SQL> select count(*) from wi_cumulative;
=20
  COUNT(*)
----------
  12148659
=20
Elapsed: 00:00:20.16
SQL> select count(rowid)  from wi_cumulative;
=20
COUNT(ROWID)
------------
    12148659
=20
Elapsed: 00:00:20.62
SQL> select count(1)  from wi_cumulative;
=20
  COUNT(1)
----------
  12148659
=20
Elapsed: 00:00:21.52
SQL> select count(null) from wi_cumulative;
=20
COUNT(NULL)
-----------
          0
=20
Elapsed: 00:00:19.12
SQL>

Tanel's favorite way of counting differed from the real count for only =
about 12 million rows,
and it wasn't that much faster, so the difference doesn't justify lack =
of precision.
--=20
Mladen Gogala
Oracle DBA



Note:
This message is for the named person's use only.  It may contain =
confidential, proprietary or legally privileged information.  No =
confidentiality or privilege is waived or lost by any mistransmission.  =
If you receive this message in error, please immediately delete it and =
all copies of it from your system, destroy any hard copies of it and =
notify the sender.  You must not, directly or indirectly, use, disclose, =
distribute, print, or copy any part of this message if you are not the =
intended recipient. Wang Trading LLC and any of its subsidiaries each =
reserve the right to monitor all e-mail communications through its =
networks.
Any views expressed in this message are those of the individual sender, =
except where the message states otherwise and the sender is authorized =
to state them to be the views of any such entity.

----------------------------------------------------------------
Please see the official ORACLE-L FAQ: http://www.orafaq.com
----------------------------------------------------------------
To unsubscribe send email to:  oracle-l-request@xxxxxxxxxxxxx
put 'unsubscribe' in the subject line.
--
Archives are at //www.freelists.org/archives/oracle-l/
FAQ is at //www.freelists.org/help/fom-serve/cache/1.html
-----------------------------------------------------------------
----------------------------------------------------------------
Please see the official ORACLE-L FAQ: http://www.orafaq.com
----------------------------------------------------------------
To unsubscribe send email to:  oracle-l-request@xxxxxxxxxxxxx
put 'unsubscribe' in the subject line.
--
Archives are at //www.freelists.org/archives/oracle-l/
FAQ is at //www.freelists.org/help/fom-serve/cache/1.html
-----------------------------------------------------------------

Other related posts: