Welcome 微信登录

首页 / 数据库 / MySQL / count(*)与count(1)的区别有多大?

数据库表的记录数为:SQL> select count(*) from table_name t;COUNT(*)
----------
      68731、使用count(*)的统计结果:SQL> alter session set nls_language = "American";Session altered.SQL> set timing on;
SQL> set autotrace on;
SQL> select a.document_id,count(*) from table_name a group by a.document_id having count(a.document_id) >1;DOCUMENT_ID   COUNT(*)
----------- ----------
          0         71Elapsed: 00:00:05.20Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=90 Card=339 Bytes=16
          95)   1    0   FILTER
   2    1     SORT (GROUP BY) (Cost=90 Card=339 Bytes=1695)
   3    2       TABLE ACCESS (FULL) OF "table_name" (Cost=78 Card=6828
           Bytes=34140) Statistics
----------------------------------------------------------
          0 recursive calls
          0 db block gets
        837 consistent gets
          0 physical reads
          0 redo size
        230 bytes sent via SQL*Net to client
        242 bytes received via SQL*Net from client
          2 SQL*Net roundtrips to/from client
          1 sorts (memory)
          0 sorts (disk)
          1 rows processedSQL>
2、使用count(1)的统计结果:SQL> alter session set nls_language = "American";Session altered.SQL> set timing on;
SQL> set autotrace on;
SQL> select a.document_id,count(1) from table_name a group by a.document_id having count(a.document_id) >1;DOCUMENT_ID   COUNT(1)
----------- ----------
          0         71Elapsed: 00:00:05.57Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=90 Card=339 Bytes=16
          95)   1    0   FILTER
   2    1     SORT (GROUP BY) (Cost=90 Card=339 Bytes=1695)
   3    2       TABLE ACCESS (FULL) OF "table_name" (Cost=78 Card=6828
           Bytes=34140) Statistics
----------------------------------------------------------
          0 recursive calls
          0 db block gets
        837 consistent gets
          0 physical reads
          0 redo size
        230 bytes sent via SQL*Net to client
        242 bytes received via SQL*Net from client
          2 SQL*Net roundtrips to/from client
          1 sorts (memory)
          0 sorts (disk)
          1 rows processedSQL>其实:两个并没有多大差别!使用count(1)要比count(*)的用时多些!对数据库表作分析之后的比较:3、使用count(*)的结果:SQL> analyze table table_name compute statistics;Table analyzed.Elapsed: 00:00:02.92
SQL> select a.document_id,count(*) from table_name a group by a.document_id having count(a.document_iDOCUMENT_ID   COUNT(*)
----------- ----------
          0         71Elapsed: 00:00:05.43Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=93 Card=341 Bytes=13
          64)   1    0   FILTER
   2    1     SORT (GROUP BY) (Cost=93 Card=341 Bytes=1364)
   3    2       TABLE ACCESS (FULL) OF "table_name" (Cost=82 Card=6873
           Bytes=27492) Statistics
----------------------------------------------------------
          0 recursive calls
          0 db block gets
        837 consistent gets
          0 physical reads
          0 redo size
        231 bytes sent via SQL*Net to client
        241 bytes received via SQL*Net from client
          2 SQL*Net roundtrips to/from client
          1 sorts (memory)
          0 sorts (disk)
          1 rows processedSQL>
  • 1
  • 2
  • 下一页
MySQL外键关联问题MongoDB之bson的介绍相关资讯      SQL 
  • SQL 新手指南  (09/10/2015 10:57:53)
  • SQL导入txt以及SQL中的时间格式操  (01/25/2015 11:35:04)
  • SQL 事务及实例演示  (08/12/2014 10:36:37)
  • SQL 中的正则函数  (06/28/2015 15:59:48)
  • SQL 集合(笔记)  (01/15/2015 20:19:06)
  • Oracle shell调用SQL操作DB  (02/03/2014 10:48:18)
本文评论 查看全部评论 (0)
表情: 姓名: 字数