【Mysql】Mysql中count(*)、count(1)和count(column_name)的区别

84 阅读1分钟

  在Mysql中,COUNT是用来计算行数的聚合函数,我们通常会使用count(*)count(1)count(column_name),它们在用法上有什么区别呢。

  • count(*)会计算表中符合条件的数据行数;
  • count(1)也是一个行数计算器,这里是一个常数表达式1,Mysql在执行时并不会关心这个常数1,在Mysql中,count(*)count(1)在性能上几乎没有区别,数据库优化器会视为它们是等效的;
  • count(column_name)关心指定列中非NULL的行数,如果列中包含NULL值,那么这些行将不会计入总行数中;

总结

  当需要关心某列中的非NULL行,需要使用count(column_name),否则直接使用count(*)count(1),而count(*)更加符合语义上的统计所有行。