MySQL中的COUNT(1)和COUNT(*) 的区别

count情况

  • count(1):可以统计表中所有数据,不统计所有的列,用1代表代码行,在统计结果中包含列字段为null的数据
  • count(字段):只包含列名的列,统计表中出现该字段的次数,并且不统计字段为null的情况
  • count(*):统计所有的列,相当于行数,统计结果中会包含字段值为null的列

count执行效率

  • 列名为主键,count(列名)比count(1)快;列名不为主键,count(1)会比count(列名)快;
  • 如果表中多个列并且没有主键,则count(1)的执行效率优于count(*);
  • 如果有主键,则select count(主键)的执行效率是最优的;如果表中只有一个字段,则select count(*)最优。

MySQL中的COUNT(1)和COUNT(*) 的区别