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);
posted @ 2020-11-17 10:06  小小吸血鬼  阅读(2643)  评论(0编辑  收藏  举报