Mysql中的count 的誤解

2021-07-22 07:48:16 字數 953 閱讀 1431

有時候總認為count(*)會比count(1)或者count(column name)慢,其實這裡面還是有個小坑的。讓我們用乙個例子來了解一下它們的區別:

---初始化語句

create

table test2 (id bigint primary

key, name varchar(24))engine=innodb;

insert

into test2(id,name)values(1,null);

insert

into test2(id,name)values(2,'name1');

insert

into test2(id,name)values(3,'name2');

接下來我們分別猜測下下面的結果是多少:

select

count(*) from test2 ;

select

count(id) from test2 ;

select

count(name) from test2 ;

select

count(name) from test2 where name is

null;

當執行結果我們可以得出:3,3,2,0,為什麼呢?讓我來解釋一下。首先count(1)指的並不是計算1的個數,而是指表的第乙個字段,如果第乙個字段沒有建立索引,他的效率是很低的;而且count(column name)預設查詢的是指定欄位非空的個數,如果你想查詢資料的所有行數,恰巧指定欄位又是乙個可存在空庫資料的字段,那麼得到的資料就不會是期望的值。再來說一下count(),在上述的count(column name)查詢方式中,如果指定的column為限制為非空,那麼mysql會將上述表示式轉化為count()來進行查詢。所以如果想要查詢資料大小,在mysql中建議使用count(*)來執行,含義明了,速度還快。

MySql中的count 函式

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

MySql中的count函式

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

mysql中count 的用法

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