Mysql中count(*) 、count(1)和count(列名)的区别

区别:

  1. count(*):包括了所有的列,也就是相当于行数,不会忽略列值为NULL的记录
  2. count(1):忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL 的记录
  3. count(列名):它包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不仅仅只是空字符串或者0,null的情况也包括)的计数,即某个字段值为NULL时不统计

在执行效率上看,分为如下几种情况:

  1. 列名为主键,count(列名)会比count(1)快
  2. 列名不为主键,count(1)会比count(列名)快
  3. 如果表多个列并且没有主键,则 count(1) 的执行效率优于 count(*)
  4. 如果表只有一个字段,则优先 select count(*)

版权声明:本文为li1351026473原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。