count(*) count(1) count(id) count(字段名)

在这里插入图片描述

总结

  • count() :innoDB引擎遍历表,但不取值,count()肯定不是null,按行累加
  • count(1):innoDB引擎遍历表,但不取值,server层对于返回的每一行放1个数字1进去,肯定不是null, 按行累加
  • count(id主键) : InnoDB引擎会遍历整张表,把每一行行的id值全部取出来,返回给server层,server层拿到id后,判断是不可能为空的,就按行累加。
  • count(字段)   1.如果这个字段是定义为not null的话,一行行地从记录里面读出这个字段,判断不能为null,按行累加   2.如果这个字段定义允许为null的话,判断到有可能是null,还要把值取出来在判断一下,不是null才累加。