1.执行效果上:
- count(*):包括了所有的列,相当于行数,在统计结果的时候不会忽略null;
- count(1):使用1 代替所有列,自动忽略所有列,在统计结果的时候不会忽略null;
- count(列):只包括那一列,在统计行数时会忽略列值为null(这里的空不是指空字符串,或0,而是指列指为NULL的时候)的计数。即:当列值为NULL时,不统计行数。
2.效率上
- 列名为主键:count(列名)比count(1)快
- 列名不为主键:count(1)比count(列名)快
- 如果多个列并没有主键,count(1)比count(*)快
- 如果有主键,count(主键)是执行效率最优的
- 如果表只有一个字段,count(*)是最优的