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值。如果出现空字符串,同样会进行统计。
原文地址:https://www.cnblogs.com/youchi/p/13547724.html