在mysql與oracle中
- 如果在開發中確實需要用到count()聚合,那么優先考慮count(*),因為mysql數據庫本身對於count(*)做了特別的優化處理。
- 有主鍵或聯合主鍵的情況下,count(*)略比count(1)快一些。
- 沒有主鍵的情況下count(1)比count(*)快一些。
- count(*)將返回表格中所有存在的行的總數包括值為null的行,然而count(列名)將返回表格中除去null以外的所有行的總數(有默認值的列也會被計入)
在hive中
- count(*)和count(1):對表中行數進行統計計算,包含null值。
- count(某字段):對表中該字段的行數進行統計,不包含null值。如果出現空字符串,同樣會進行統計。