含义:
- count(1)对每行都记录,无论该行的值是什么。将固定常量值1作为参数,只需检查是否存在行,而不关心具体数值。(计算一共有多少符合条件的行,不会忽略null值)
- count(*)对所有行进行计数。使用通配符作为参数,表示计算所有行的数量。(统计所有的行数,包括为null的行)
- count(colunm)对指定列中非空值的行进行计数。接收一个具体的列名作为参数,只统计该列中非null值的行数。(如果列中存在null值,则不计入计数结果)
区别:
- count(1)和count(*)都是计算总行数,不关心具体值,而count(column)只计算指定列中非null值的行数
- count(1)和count(*)没有区别,在效果和执行效率上相似。大多数情况下,它们的执行效率是相等的
执行效率:
count(字段) < count(主键id) < count(1) ≈ count(*)