count
count用于返回內(nèi)容(行)的個數(shù)
-
COUNT(*) 能對整張表的內(nèi)容(行)進行計數(shù),不管內(nèi)容(行)是有值還是空值
- COUNT(1) 能對整張表的內(nèi)容(行)進行計數(shù),不管內(nèi)容(行)是有值還是空值
- COUNT(字段) 能對某一字段的內(nèi)容(行)進行計數(shù),但是會忽略 NULL 值。
表table
select count(*) from table
count(*)
select count(1) from table
count(1)
select count(ID) from table
count(ID)
區(qū)別
- 如果列為主鍵,count(列名)效率優(yōu)于count(1)
- 如果列不為主鍵,count(1)效率優(yōu)于count(列名)
- 如果表中存在主鍵,count(主鍵列名)效率最優(yōu)
- 如果表中只有一列,則count(*)效率最優(yōu)
- 如果表有多列,且不存在主鍵,則count(1)效率優(yōu)于count(*)
count(1),其實就是計算一共有多少符合條件的行,1并不是表示第一個字段,而是表示一個固定值,這個字段就是固定值1,count(1),就是計算一共有多少個1。
count(*),執(zhí)行時會把星號翻譯成字段的具體名字,效果也是一樣的,不過多了一個翻譯的動作,比固定值的方式效率稍微低一些。
AVG
AVG() 函數(shù)通過計算某字段(列)內(nèi)容(行)的個數(shù)和它們的數(shù)值之和來返回某一字段的平均值。
MAX
MAX() 函數(shù)能夠返回某一字段(列)的最大值。值得注意的是,要想使用 MAX() 函數(shù),就一定需要有特定的字段(列)與之配對,不能偷懶用通配符 * 作參數(shù)。