一、执行效果:

1.  count(1) and count(*)

当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了! 
从执行计划来看,count(1)和count(*)的效果是一样的。 但是在表做过分析之后,count(1)会比count(*)的用时少些(1w以内数据量),不过差不了多少。 
 
如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。 
因为count(*),自动会优化指定到那一个字段。所以没必要去count(1),用count(*),sql会帮你完成优化的 因此: count(1)和count(*)基本没有差别! 
 
2. count(1) and count(字段)
两者的主要区别是
(1) count(1) 会统计表中的所有的记录数, 包含字段为null 的记录。
(2) count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。即 不统计字段为null 的记录。  
转自:http://www.cnblogs.com/Dhouse/p/6734837.html

二、count(*) 和 count(1)和count(列名)区别

执行效果上 :  
count(*)包括了所有的列,相当于行数,在统计结果的时候, 不会忽略列值为NULL  
count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候, 不会忽略列值为NULL  
count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数, 即某个字段值为NULL时,不统计。

执行效率上:  
列名为主键,count(列名)会比count(1)快  
列名不为主键,count(1)会比count(列名)快  
如果表多个列并且没有主键,则 count(1) 的执行效率优于 count(*)  
如果有主键,则 select count(主键)的执行效率是最优的  
如果表只有一个字段,则 select count(*)最优。
转自:http://eeeewwwqq.iteye.com/blog/1972576

实例分析

mysql> create table counttest(name char(1), age char(2));
Query OK, 0 rows affected (0.03 sec)mysql> insert into counttest values-> ('a', '14'),('a', '15'), ('a', '15'), -> ('b', NULL), ('b', '16'), -> ('c', '17'),-> ('d', null), ->('e', '');
Query OK, 8 rows affected (0.01 sec)
Records: 8  Duplicates: 0  Warnings: 0mysql> select * from counttest;
+------+------+
| name | age  |
+------+------+
| a    | 14   |
| a    | 15   |
| a    | 15   |
| b    | NULL |
| b    | 16   |
| c    | 17   |
| d    | NULL |
| e    |      |
+------+------+
8 rows in set (0.00 sec)mysql> select name, count(name), count(1), count(*), count(age), count(distinct(age))-> from counttest-> group by name;
+------+-------------+----------+----------+------------+----------------------+
| name | count(name) | count(1) | count(*) | count(age) | count(distinct(age)) |
+------+-------------+----------+----------+------------+----------------------+
| a    |           3 |        3 |        3 |          3 |                    2 |
| b    |           2 |        2 |        2 |          1 |                    1 |
| c    |           1 |        1 |        1 |          1 |                    1 |
| d    |           1 |        1 |        1 |          0 |                    0 |
| e    |           1 |        1 |        1 |          1 |                    1 |
+------+-------------+----------+----------+------------+----------------------+
5 rows in set (0.00 sec)

额外参考资料:http://blog.csdn.net/lihuarongaini/article/details/68485838

count(1)、count(*)、count(列名) 详解相关推荐

  1. count()函数的详解

    一.什么是count函数 1.COUNT() 函数返回匹配到指定条件的记录行数. 二.怎样使用 1.count(*)和count(1)它们的用法是一样的. 例如: 都是对于指定列不为null的行数. ...

  2. 围棋定式详解 v3.01 下载

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  3. 在Mysql中count(*)、count(1)与count(字段/列名)的详解—聚合函数count

    目录 一.简单区别 二.效率比较 三.举例 3.1创建表 3.1.1利用count(*)进行统计所有行的数目 3.1.2利用count(1)进行统计所有行的数目 3.1.3利用count(字段/列名) ...

  4. sql语句中count(*),count(1),count(id)区别详解

    1.前言 相信大多数有一定经验的phper都碰到过这个问题,count(*)和count(1),以及count('id')列有什么区别呢,这三者到底有什么不同呢,今天我将为此做深层的剖析,各位猿友们, ...

  5. mysql group by having count_mysql中count(), group by, order by使用详解

    最近做IM的时候遇到一个问题,同时用到了这三个关键字.就是查询一个人的离线消息详情,我们服务端返回给客户端显示的这个详情包括了三个内容,第一个要求列出离线这段时间哪些人或者群给你发了消息,第二个这其中 ...

  6. 二进制拆弹实验详解_Population Count算法-求二进制数中1的个数

    所谓Population Count算法,即是指计算一个二进制数中1的个数的算法.具体来说,就是任意给定一个无符号整数N,求N的二进制表示中1的个数,比如N = 5(0101)时,返回2:N = 15 ...

  7. mysql 聚集函数 count 使用详解

    mysql 聚集函数 count 使用详解 本文将探讨以下问题 1.count(*) . count(n).count(null)与count(fieldName) 2.distinct 与 coun ...

  8. python count函数代码_python count函数用法详解_后端开发

    fgetc函数的作用详解_后端开发 fgetc函数的作用是从指定文件读入一个字符,要求文件的打开方式必须是以读或读写的方式或者追加的方 式,只写方式是不能读的. 在python中可以使用"c ...

  9. python中count的作用_python count函数用法详解

    在python中可以使用"count()"函数统计字符串里某个字符出现的次数,该函数用于统计次数,其语法是"count(sub, start= 0,end=len(str ...

  10. mysql数据库中count的作用_详解 MySQL中count函数的正确使用方法

    1. 描述 在MySQL中,当我们需要获取某张表中的总行数时,一般会选择使用下面的语句 select count(*) from table; 其实count函数中除了*还可以放其他参数,比如常数.主 ...

最新文章

  1. 知乎热议:科研界是如何保护自己的成果免于剽窃的?
  2. 转 awk 使用方法
  3. 如何在自定义数据源组件中限制用户的更改
  4. CentOS7.2基于LAMP搭建WordPress,并自定义Logo和名称
  5. Docker容器运行后退出,怎么才能一直运行?
  6. 【SDL】SDL学习笔记一 SDL的子系统的初始化和退出
  7. 《用户网络行为画像》读书笔记(一)
  8. 学数据结构,仅仅须要主要的编程体验
  9. vue 监听路由变化
  10. 小米MIX 4内部代号曝光:“众神之王”三季度降临
  11. MongoDB 安装与启动
  12. 数据结构与算法的分析 —— 平均时间复杂度 vs 分摊时间复杂度
  13. linux下dns视图配置
  14. spring异常处理器
  15. Vue3格式化Volar报错
  16. 褚时健 | 我这辈子最问心无愧的就是:没有庸庸碌碌地过完一生
  17. 数据分析之统计知识总结
  18. ubuntu 复制文件夹到另一目录命令
  19. python批量检索文献_基于Python的文献检索系统设计与实现
  20. Linux的bind服务

热门文章

  1. 百度有啊前端技术初窥
  2. 他一生只做一件事,专注150万农场鸡的鸡蛋销售
  3. DEFCON 26 | 利用传真功能漏洞渗透进入企业内网(Faxploit)
  4. js获取粘贴的html,JS读取粘贴板内容
  5. 南通全国计算机等级考试,南通大学2017年3月全国计算机等级考试报名通知
  6. RocketMQ-单条消息大小上限
  7. ewebeditor 2.8.0目录遍历漏洞——漏洞复现
  8. 在家佛弟子对待工作的态度——世俗八正道
  9. Eplan创建符号详细解说
  10. 云服务器防火墙开放端口访问--电信云服务器