- COUNT(*):
COUNT(*) 是一种特殊的语法,它返回结果集中的行数,不考虑任何列的值。它会将表中的每一行都计数,包括含有NULL值的行。
- COUNT(1):
COUNT(1) 是一种常用的优化写法。它计算的是任意列上的非空行数,因为在这种情况下,计算的列没关系。这意味着它会忽略所有列中的NULL值,只计算非空行的数目。
- COUNT(id):
COUNT(id) 是对指定的列进行计数。它只计算指定列中非空值的行数,也就是说该列不为NULL的行才会被计数。在执行时,它会遍历该列的每一行,检查是否为NULL,然后累计计数。
这些函数的目标都是计算行数,只是在对待NULL值和对性能的考虑上有所不同。COUNT(*) 不管是不是 NULL 都计入,而 COUNT(id) 和 COUNT(1) 均只计入非 NULL 行。