count(*) 与 count(1)的区别?
在mysql与oracle中
- 如果在开发中确实需要用到count()聚合,那么优先考虑count(*),因为mysql数据库本身对于count(*)做了特别的优化处理。
- 有主键或联合主键的情况下,count(*)略比count(1)快一些。
- 没有主键的情况下count(1)比count(*)快一些。
- count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除去null以外的所有行的总数(有默认值的列也会被计入)
在hive中
- count(*)和count(1):对表中行数进行统计计算,包含null值。
- count(某字段):对表中该字段的行数进行统计,不包含null值。如果出现空字符串,同样会进行统计。