如果我們僅僅是統計 某錶的總共多少條(假設是innodb引擎,不考慮myisam),那麼很簡單
一、假設我們的表字段是這樣的(假設表名是users)
id: 主鍵、自增
username:使用者名稱 varchar(50)
那麼select count(*) from users 不可置疑肯定是可以的。
我們explain select count(*) from users 指標type 是index,key 是主鍵id
二、第二個問題,因為使用者表我們往往會進行登入操作,或者查詢操作,因此username往往會把它設定為普通索引或唯一索引
這個無可厚非
三、那麼如果我們還是要統計所有的表資料呢?
我們可以 explain select count(*) from users .這時會發現mysql 缺省會把username 作為key掃瞄。
如果你沒有任何where條件
,那麼明顯是不應該使用username作為 key (mysql有時比較笨)
因此,正確的方法是 select count(*) from users
use index(primary)
注意 use index(primary) 。這代表我們使用主鍵,而不使用username .
大家可以分別 explain 一下兩個sql看看 指標區別到底在哪?
查詢速度對比 ,大家可以插入千萬級資料進行測試
千萬級測試
引擎 innodb 字符集utf8
引擎 myisam字符集utf8
以上測試 mysql版本為5.6.35 未任何優化
MySQL中count 的條件統計方式
前幾天做筆試題時遇到乙個問題,如下 乙個info表內容如下 date result 2019 10 12 high 2019 10 12 low2019 10 12 high 2019 10 16 low2019 10 16 low2019 10 16 high 請寫出相應的sql語句,以得出以下的...
mysql 七 count 統計方式的不同
count 的實現方式 在不同的mysql引擎中,count 實現的方式不同。myisam引擎中把乙個表的總行數直接存在了磁碟上,執行count 的時候直接返回這個數,效率很高 不支援事務 而innodb引擎,執行count 的時候,需要把資料一行一行的從引擎讀出來,然後累計計數 因為mvcc的實現...
MySql中的count 函式
1.count 函式是用來統計表中記錄的乙個函式,返回匹配條件的行數。2.count 語法 1 count 包括所有列,返回表中的記錄數,相當於統計表的行數,在統計結果的時候,不會忽略列值為null的記錄。2 count 1 忽略所有列,1表示乙個固定值,也可以用count 2 count 3 代替...