日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

聊聊MySQL的COUNT(*)的性能

瀏覽:98日期:2023-10-08 14:13:07

前言

基本職場上的程序員用來統計數據庫表的行數都會使用count(*),count(1)或者count(主鍵),那么它們之間的區別和性能你又是否了解呢?

其實程序員在開發的過程中,在一張大表上統計總行數是非常耗時的一個操作,那么我們應該用哪個方法統計會更快呢?

接下來我們就來聊一聊MySQL中統計總行數的方法和性能。

count(*),count(1),count(主鍵)哪個更快?

1、建表并且插入1000萬條數據進行實驗測試:

# 創建測試表CREATE TABLE `t6` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `status` tinyint(4) NOT NULL, PRIMARY KEY (`id`), KEY `idx_status` (`status`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;# 創建存儲過程插入1000w數據CREATE PROCEDURE insert_1000w()BEGIN DECLARE i INT; SET i=1; WHILE i<=10000000 DO INSERT INTO t6(name,status) VALUES(’god-jiang-666’,1); SET i=i+1; END WHILE;END;#調用存儲過程,插入1000萬行數據call insert_1000w();

2、分析實驗結果

# 花了0.572秒select count(*) from t6;

聊聊MySQL的COUNT(*)的性能

# 花了0.572秒select count(1) from t6;

聊聊MySQL的COUNT(*)的性能

# 花了0.580秒select count(id) from t6;

聊聊MySQL的COUNT(*)的性能

# 花了0.620秒select count(*) from t6 force index (primary);

聊聊MySQL的COUNT(*)的性能

從上面的實驗我們可以得出,count(*)和count(1)是最快的,其次是count(id),最慢的是count使用了強制主鍵的情況。

下面我們繼續測試一下它們各自的執行計劃:

explain select count(*) from t6;show warnings;

聊聊MySQL的COUNT(*)的性能

聊聊MySQL的COUNT(*)的性能

explain select count(1) from t6;show warnings;

聊聊MySQL的COUNT(*)的性能

聊聊MySQL的COUNT(*)的性能

explain select count(id) from t6;show warnings;

聊聊MySQL的COUNT(*)的性能

聊聊MySQL的COUNT(*)的性能

explain select count(*) from t6 force index (primary);show warnings;

聊聊MySQL的COUNT(*)的性能

聊聊MySQL的COUNT(*)的性能

從上面的實驗可以得出這三點:

count(*)被MySQL查詢優化器改寫成了count(0),并選擇了idx_status索引 count(1)和count(id)都選擇了idx_statux索引 加了force index(primary)之后,走了強制索引

這個idx_status就是相當于是二級輔助索引樹,目的就是為了說明: InnoDB在處理count(*)的時候,有輔助索引樹的情況下,會優先選擇輔助索引樹來統計總行數。

為了驗證count(*)會優先選擇輔助索引樹這個結論,我們繼續來看看下面的實驗:

# 刪除idx_status索引,繼續執行count(*)alter table t6 drop index idx_status;explain select count(*) from t6;

聊聊MySQL的COUNT(*)的性能

從以上實驗可以得出,刪除了idx_status這個輔助索引樹,count(*)就會選擇走主鍵索引。所以結論:count(*)會優先選擇輔助索引,假如沒有輔助索引的存在,就會走主鍵索引。

為什么count(*)會優先選擇輔助索引?

在MySQL5.7.18之前,InnoDB通過掃描聚集索引來處理count(*)語句。

從MySQL5.7.18開始,InnoDB通過遍歷最小的可用二級索引來處理count(*)語句。如果不存在二級索引,則掃描聚集索引。

新版本為何會使用二級索引來處理count(*)呢?

因為InnoDB二級索引樹的葉子節點上存放的是主鍵,而主鍵索引樹的葉子節點存放的是整行數據,所以二級索引樹比主鍵索引樹小。因此查詢優化器基于成本考慮,優先選擇的是二級索引。所以索引count(*)快于count(主鍵)。

總結

這篇文章的結論就是count(*)=count(1)>count(id)。

為什么count(id)走了主鍵索引還會更慢呢?因為count(id)需要取出主鍵,然后判斷不為空,再累加,代價更高。

count(*)是會總計出所有NOT NULL和NULL的字段,而count(id)是不會統計NULL字段的,所以我們在建表的盡量使用NOT NULL并且給它一個默認是空即可。

最后,在以后總計數據庫表的總行數的時候,可以大膽的使用count(*)或者count(1)。

參考資料

《高性能MySQL》(第三版)第六章優化COUNT()查詢 《MySQL實戰45講》林曉斌

到此這篇關于聊聊MySQL的COUNT(*)的性能的文章就介紹到這了,更多相關MySQL COUNT(*)內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品美女| 午夜久久av| 国产suv精品一区二区四区视频 | 久久激情五月激情| 日韩亚洲精品在线| 久久精品免视看国产成人| 91欧美精品| 国产精品videossex久久发布| 激情亚洲影院在线观看| 国产精品久久久久久av公交车| 欧美a在线观看| 国产精品巨作av| 今天的高清视频免费播放成人| 久久青青视频| 免费在线观看精品| 视频精品一区| 国产精品亚洲四区在线观看| 深夜福利一区| 美女久久99| 国产欧美在线观看免费| 亚洲黄色中文字幕| 久久久久久免费视频| 日韩精品一二三| 美国三级日本三级久久99 | 国产人成精品一区二区三| 毛片在线网站| 日韩精品亚洲专区| 九九在线精品| 国产精品啊v在线| 四虎成人精品一区二区免费网站| 久久伊人国产| 日本国产亚洲| 精品视频99| 欧美亚洲二区| 波多野结衣久久精品| 亚洲精品中文字幕乱码| 麻豆国产一区| 亚洲免费中文| 欧美中文字幕一区二区| 欧美在线看片| 综合一区av| 亚洲国产专区| 久久久久欧美精品| 国产精品极品在线观看| 久久激情五月婷婷| 黄色成人在线网址| 成人国产精选| 999国产精品视频| 国产精品第一国产精品| 国产一区二区三区免费在线| 亚洲一区中文| 色在线中文字幕| 国产一精品一av一免费爽爽| 免费久久精品视频| 久久久影院免费| 久久国产主播| 久久免费精品| 欧美激情久久久久久久久久久| 成人小电影网站| 精品国内亚洲2022精品成人| 精品中文字幕一区二区三区| 日韩精品一区二区三区av| 麻豆成人在线| 视频一区视频二区中文| 亚洲91久久| 久久成人福利| 国产精品久久久久久久免费软件 | 亚洲精品福利电影| 国产精品久久久一区二区| 国产精品免费不| 日韩高清成人| 99riav国产精品| 亚洲综合日韩| 一区在线观看| 午夜在线视频一区二区区别| 成人啊v在线| 不卡在线一区| 日韩精品欧美大片| 国产精品日韩精品中文字幕| 国产精品久久久免费| 青草av.久久免费一区| 精品久久亚洲| 欧美日韩四区| 婷婷精品在线| 夜鲁夜鲁夜鲁视频在线播放| 日韩视频一区| 日本午夜精品一区二区三区电影| 日韩精品亚洲一区二区三区免费| 国产精品一级| 香蕉久久精品| 9国产精品视频| 麻豆中文一区二区| 国产精品毛片在线| 久久久久亚洲精品中文字幕| 国产aⅴ精品一区二区三区久久| 欧美日韩视频| 欧美aa在线视频| 国产v综合v| 欧美在线观看天堂一区二区三区| 日本电影久久久| 亚洲成av在线| 亚洲久草在线| 久久高清精品| 丝袜美腿亚洲色图| 国产一区二区精品福利地址| 91亚洲国产| 天堂va在线高清一区| 卡一卡二国产精品| 亚洲精选av| 精品视频一区二区三区四区五区 | 亚洲一级淫片| 99久久亚洲精品| 欧美在线精品一区| 亚洲一区日韩| 国产乱码午夜在线视频| 国产精品入口久久| 国产精品视区| 欧美成人精品三级网站| 日本伊人午夜精品| 欧美日韩水蜜桃| 国产精品主播| 日韩高清成人在线| 91精品国产调教在线观看| 国产一区二区三区久久| 久久精品999| 91成人在线| 国产精品777777在线播放 | 国产精品成人a在线观看| 石原莉奈在线亚洲三区| 婷婷成人在线| 美女久久精品| 国产精品久久观看| 亚洲91在线| 少妇精品久久久| 日韩三区免费| 久久久久网站| 欧美精品一区二区久久| 九色精品91| 久久精品av| 女人天堂亚洲aⅴ在线观看| 蘑菇福利视频一区播放| 亚洲tv在线| 欧美激情麻豆| 久久超碰99| 欧美成人精品三级网站| 久久网站免费观看| aa国产精品| 亚洲精品影视| 欧美午夜三级| 亚洲午夜天堂| 久热综合在线亚洲精品| 欧美在线91| 色综合五月天| 日韩成人高清| 蜜桃av一区二区三区电影| 免费视频一区二区| 精品视频97| 91嫩草亚洲精品| 亚洲精品乱码日韩| 国产一区二区三区亚洲| 欧美1级日本1级| 免费一区二区三区在线视频| 欧美日韩精品在线一区| 亚洲毛片一区| 国产精品99一区二区三区| 国产视频一区欧美| 美腿丝袜亚洲一区| 午夜在线精品| 欧美一区自拍| 99热精品在线观看| 午夜电影一区| 久久精品动漫| 日韩精品免费观看视频| 日韩国产在线| 国产精品v一区二区三区| 综合激情视频| 日韩精品一区二区三区免费观看| 亚洲三级观看| 国产伦久视频在线观看| 国产色99精品9i| 亚洲精品麻豆| 午夜亚洲一区| 亚洲激情欧美| 蜜桃国内精品久久久久软件9| 国产在线日韩精品| 国产亚洲电影| 亚洲日产av中文字幕| 在线日韩一区| 色婷婷久久久| 国产精品yjizz视频网| 欧美日韩一区二区国产| 亚洲激情黄色| 成人久久一区| 精品国产亚洲一区二区在线观看| 亚洲精品伊人| 日本欧美大码aⅴ在线播放| 日韩欧美四区| 国产探花一区在线观看| 老色鬼久久亚洲一区二区| 亚洲性图久久|