MySQL之聚合函式count 的用法

2021-10-08 08:33:32 字數 749 閱讀 2427

在使用mysql資料庫查詢的時候,涉及到數量查詢,總是會使用count函式,一般有:count(*)、count(字段)、count(1)、count(主鍵id)這幾種用法,這些用法有什麼不同,原來沒有仔細思考過,今天偶然看到,在此記錄,希望自己在以後的開發中,能夠有所體會。

count()是乙個聚合函式,對於返回的結果集,一行行地判斷,如果count函式的引數不是null,累計值就加1,否則不加。最後返回累計值。

count(id)

innodb引擎會遍歷整張表,把每一行的id值都取出來,返回給server層。server層拿到id後,判斷是不可能為空的,就按行累加。

count(1)

innodb引擎遍歷整張表,但不取值。server層對於返回的每一行,放乙個數字1進去,判斷是不可能為空的,按行累加。

count(字段)

如果這個「字段」是定義為not null的話,一行行地從記錄裡面讀出這個字段,判斷不能為null,按行累加;如果這個字段定義允許為null,那麼執行的時候,判斷到有可能是null,還要把值取出來再判斷一下,不是null才累加。

count(*)

不會把全部字段取出來,而是專門做了優化,不取值。count(*)肯定不是null,按行累加。

按照效率排序的話,count(字段)count(id)雖然走的索引,但是還是需要一行一行的掃瞄才能統計出來總數,所以效率沒有那麼高。

mysql之count 函式詳解

1.count 函式是用來統計表中記錄的乙個函式,返回匹配條件的行數。2.count 語法 1 count 包括所有列,返回表中的記錄數,相當於統計表的行數,在統計結果的時候,不會忽略列值為null的記錄。2 count 1 忽略所有列,1表示乙個固定值,也可以用count 2 count 3 代替...

MySQL中聚合函式count的使用和效能優化

本文的環境是windows 10,mysql版本是5.7.12 log count的基本作用是有兩個 用來獲取滿足條件的資料的數量。但是其中有一些與使用中印象不同的情況,比如當count作用一列 多列 以及使用 來表達整行產生的效果是不同的。示例表如下 如果有null值,在返回的結果中會被過濾掉 s...

MySQL中聚合函式count的使用和效能優化

count的基本作用是有兩個 用來獲取滿足條件的資料的數量。但是其中有一些與使用中印象不同的情況,比如當count作用一列 多列 以及使用 來表達整行產生的效果是不同的。1 不計算null的值 select count province from counttest 結果 5 select coun...