count函式的作用
想要真正的理解count函式,我們就必須明白count函式的作用。
作用一:統計某一列非空(not null)值得數量,即統計某列有值得結果數,使用count(col)。
作用二:統計結果集的行數,此時不用管某列是否為null值。即使用count(*).
明白了這點,我們就應該知道MySQL的count(*)並不是想象中的那樣,統計每一列的值,而是直接忽視掉所有列,直接統計行數,那麼它的效率肯定是很高的。
但是有一點,當col指定了該欄位為NOT NULL時實際上,MySQL會自動將count(col)轉為count(*),但是這樣也同樣耗費了些時間,如果col沒有指定為NOT NULL的話,那麼效率就更低了,MySQL就必須要判斷每一行的值是否為空。
所以綜上所述,最好優先使用select count(*)
當統計某一列等於多少的值得時候可以使用下面兩種方法。
#統計出表中id為23的值的數量的兩種方法
SELECT SUM(IF(id = 23,1,0)) FROM table
SELECT COUNT(id = 23 OR NULL) FROM table
count函式的作用
想要真正的理解count函式,我們就必須明白count函式的作用。
作用一:統計某一列非空(not null)值得數量,即統計某列有值得結果數,使用count(col)。
作用二:統計結果集的行數,此時不用管某列是否為null值。即使用count(*).
明白了這點,我們就應該知道MySQL的count(*)並不是想象中的那樣,統計每一列的值,而是直接忽視掉所有列,直接統計行數,那麼它的效率肯定是很高的。
但是有一點,當col指定了該欄位為NOT NULL時實際上,MySQL會自動將count(col)轉為count(*),但是這樣也同樣耗費了些時間,如果col沒有指定為NOT NULL的話,那麼效率就更低了,MySQL就必須要判斷每一行的值是否為空。
所以綜上所述,最好優先使用select count(*)
當統計某一列等於多少的值得時候可以使用下面兩種方法。
#統計出表中id為23的值的數量的兩種方法
SELECT SUM(IF(id = 23,1,0)) FROM table
SELECT COUNT(id = 23 OR NULL) FROM table