ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Count(*)与count(列)的区别

Count(*)与count(列)的区别

原创 Linux操作系统 作者:qgw521 时间:2008-12-19 09:21:08 0 删除 编辑

如果列是非空的话,count(*)count()是基本一样的,有人说count()的性能会好一点,但我测试了一下,发现其实也不一定,有时count(*)的查询时间反而会小一点.

 

如果列含有空值,count()就只计算非空值,count(*)其实是计算有多少行(包括列为空的行),所以结果就不一样了.

:

SQL> WITH TEST AS (SELECT 1 ID FROM DUAL

  2  UNION ALL SELECT 3 FROM DUAL

  3  UNION ALL SELECT 4 FROM DUAL

  4  UNION ALL SELECT NULL FROM DUAL

  5  UNION ALL SELECT 5 FROM DUAL

  6  UNION ALL SELECT  NULL FROM DUAL

  7  union all select null from dual)

  8  SELECT count(*)  FROM TEST;

 

  COUNT(*)

----------

         7

SQL> WITH TEST AS (SELECT 1 ID FROM DUAL

  2  UNION ALL SELECT 3 FROM DUAL

  3  UNION ALL SELECT 4 FROM DUAL

  4  UNION ALL SELECT NULL FROM DUAL

  5  UNION ALL SELECT 5 FROM DUAL

  6  UNION ALL SELECT  NULL FROM DUAL

  7  union all select null from dual)

  8  SELECT count(id)  FROM TEST;

 

 COUNT(ID)

----------

         4

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13387766/viewspace-517410/,如需转载,请注明出处,否则将追究法律责任。

下一篇: Union all 与 or
请登录后发表评论 登录
全部评论

注册时间:2008-06-06

  • 博文量
    128
  • 访问量
    276694