關於count函式

2021-08-29 16:42:35 字數 1524 閱讀 6779

sybase的transact-sql使用者指南是這樣說的: count 得出表示式中非空值的數量,而 count(*) 得出表中的總行數。

select count(laay) from k_zs.. b_ms

select count(

distinct laay) from k_zs.. b_ms

select count(*) from k_zs..b_ms

上面的三條

sql在2.106開發庫上執行結果如下:

-----------

61940

-----------

353           

-----------

72127

以前老以為對同乙個查詢條件,count(fieldname)和count(*)的結果是一樣的……所以首先要對count函式的定義清楚,

從我們一般使用count函式的角度,這裡最好就是用count(*) 或者count(主鍵),或者是乙個肯定不為null的列,不然結果就可能少了。

另外從效能上,在k_ms.. b_ms上做實驗,

資料為1472435條(其中bh為主鍵):

引用:

select count(*) from k_ms.. b_ms

execution time 2.

sql

server cpu time: 200 ms.  sql server elapsed time: 283 ms.

select count(bh) from k_ms.. b_ms  

execution time 2.

sql server cpu time: 200 ms.  sql server elapsed time: 233 ms.

如果用表中的其他非主鍵字段(其中laay、jbfy為

索引字段,spcx普通字段),比如

引用:

select count(laay) from k_ms.. b_ms

execution time 4.

sql server cpu time: 400 ms.  sql server elapsed time: 326 ms.

select count(spcx) from k_ms.. b_ms

execution time 194.

sql server cpu time: 19400 ms.  sql server elapsed time: 28373 ms.

select count(jbfy) from k_ms.. b_ms

execution time 16.

sql server cpu time: 1600 ms.  sql server elapsed time: 2436 ms.

多次執行以上sql可以得出初步結論:count(主鍵)最快,count(*)次之,並且兩者效能差異不大;但是如果count其他

任何非主鍵字段,則速度一般會比較慢,尤其是哪些非索引字段。

關於mysql中的count 函式

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

C Map find函式和count函式

之前一直以為count函式可以返回map中乙個key出現的頻次,即key對應的value值,主要是離散化處理計數時想當然了。仔細理解加實踐之後,count函式返回的是乙個容器中,某一元素出現的次數,對於map,即返回key出現的次數,但是map中的key是不允許重複出現的,故count函式返回值只能...

count 函式的用法

sql count 語法 sql count column name 語法 count column name 函式返回指定列的值的數目 null 不計入 select count column name from table name sql count 語法 count 函式返回表中的記錄數 s...