在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(*)更加符合语义上的统计所有行。