count(column_name),count(1),count(*)

count()用于统计行数,常见用法有:

  1. count(column_name)
  2. count(1)
  3. count(*)

区别

  • count(column_name) 只能统计非空的数据行,而count(1)/count(*)则会统计所有行

  • count(1)count(*)的效率一致,但是count(*)的成本更低

    对于InnoDB,count(1)和count(*)都不适合大规模数据,对于MyISAM,维护了一个size属性来表示数据总数

    为什么count(*)成本更低,因为二级索引比聚簇索引占用的存储空间更小