SQL中count(*)和count(1)的区别
要想弄清楚这个问题,那就得先搞清楚COUNT()函数,COUNT()函数可以有如下几种用法:
1、SELECT COUNT(字段名) FROM 表名;
解释:统计该字段名不为null的数据总数。
2、SELECT COUNT(*) FROM 表名;
解释:统计该数据表中数据总数。
3、SELECT COUNT(1) FROM 表名;
解释:统计该数据表中数据总数。
COUNT(*)和COUNT(1)的区别:
这俩种方式都可以用来统计表中总数据量,但是他们的实现方式略有不同。
- COUNT(*)是统计表中的行(该行数据同时都不为null)的数据总量,也就是说如果有一行所有数据都为null,那么就不会被统计。
- COUNT(1)是通过在该表的表结构中添加一列,该列的数据都为1,最终是通过统计该列中有多少个数据为1的数量,即为数据总数。
在效率方面:
- MYISAM存储引擎中,count(*)的效率高,因为该存储引擎中有数据计数器,直接可以获取数据总量;
- INNODB存储引擎中,count(*)和count(1)效率差不多,都比COUNT(表名)效率高(因为该方式得判断字段值是否为null);
当你发现自己的才华撑不起野心时,就请安静下来学习吧