mysql想必很多程序猿都是不陌生的。很多人在糾結count的用法,怎么樣才能查詢效果最好。今天來談談小編的一些看法,僅供參考。
1、咱們先準備建一個表,并準備好測試數據方便后續(xù)步驟測試
以InnoDB引擎表為例
建表語句如下
CREATE TABLE test.test
(
a VARCHAR(50) NOT NULL COMMENT 'ddfdf',
b VARCHAR(15) NOT NULL COMMENT 'fds',
c VARCHAR(20) NOT NULL COMMENT 'asda',
d VARCHAR(8) NOT NULL COMMENT 'ads',
e longblob NOT NULL COMMENT 'asda',
f VARCHAR(2000) COMMENT 'ads',
g VARCHAR(8) NOT NULL COMMENT 'assd',
h DATE NOT NULL COMMENT 'adsad',
z VARCHAR(10) NOT NULL COMMENT 'adsd'
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
![](/d/20211018/81630923b8dc2aec72f74e6797424cef.gif)
2、登陸到mysql并且換數據庫
執(zhí)行建表語句如下圖所示
![](/d/20211018/55ec0e98718dfc2fdb572df2805bbf90.gif)
3、然后是準備測試數據,簡單查一下是否有數據,如下圖所示
![](/d/20211018/7902dd6305cf0147e2edc7ae2288a4bd.gif)
4、接下來開始做測試
在沒有where條件的情況下
有人覺得count(*)比count(字段)要快,還有人覺得count(字段)比count(*)要快?
那到底那個快,咱們一試便知,請看下圖
根據圖中結果顯示,明顯count(字段)快一些
![](/d/20211018/5ac8f60a687336a9dc7c08bf99e046e3.gif)
5、那在有where條件的情況呢?count(*)和count(字段)誰更快?
請看下圖執(zhí)行效果
count(*)快一點,可能是數據量太少看不出太明顯的效果
![](/d/20211018/c5f40d38d532317b1a4510f7948342ec.gif)
6、當然可以通過查看執(zhí)行計劃進行分析
在執(zhí)行的sql前面加上desc或者explain即可,如下圖所示
![](/d/20211018/93f96d379189870eb88d5ac84758806e.gif)
最后總結一下1.在沒有where條件下,建議count(字段)2.在有where條件的情況下,建議count(*)最后總結一下1.在沒有where條件下,建議count(字段)2.在有where條件的情況下,建議count(*)
您可能感興趣的文章:- MySQL 大表的count()優(yōu)化實現
- MySQL中聚合函數count的使用和性能優(yōu)化技巧
- 關于mysql中innodb的count優(yōu)化問題分享
- 聊聊MySQL的COUNT(*)的性能
- 詳解 MySQL中count函數的正確使用方法
- 淺談MySQL 統(tǒng)計行數的 count
- MySQL中無過濾條件的count詳解
- MySQL中count(*)、count(1)和count(col)的區(qū)別匯總
- mySQL count多個表的數據實例詳解
- MySQL COUNT函數的使用與優(yōu)化