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

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

聊聊MySQL的COUNT(*)的性能

瀏覽:99日期: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久久,三上悠亚国产精品一区二区三区
欧美精品91| 在线精品亚洲| 青草av.久久免费一区| 久久亚洲国产精品一区二区| 欧美不卡视频| 亚洲二区视频| 人人香蕉久久| 久久久久免费av| 亚洲二区精品| 国产精品色网| 日本一区福利在线| 欧美日本不卡高清| 久久97久久97精品免视看秋霞| 欧美国产另类| 成人午夜网址| 国产 日韩 欧美一区| 欧美a级片一区| 一区二区三区国产在线| 欧美一级全黄| 久久亚洲黄色| 久久国产亚洲精品| 女主播福利一区| 最近国产精品视频| 国产精品99久久久久久董美香| 精品一区二区三区视频在线播放| 91亚洲人成网污www| 九一成人免费视频| 亚洲2区在线| 精品一区二区三区免费看| 欧美日韩精品一区二区视频| 免费在线观看一区二区三区| 国产精品红桃| 91精品韩国| 综合激情五月婷婷| 久久精品欧洲| 在线国产一区二区| 91精品国产一区二区在线观看| 精品国产乱码久久久久久樱花 | 午夜久久美女| 天海翼精品一区二区三区| 久久久国产精品网站| 欧美/亚洲一区| 日韩福利视频导航| se01亚洲视频 | 久久久精品五月天| 中文字幕一区二区三区四区久久| 国产精品v一区二区三区| 日韩在线欧美| 色综合视频一区二区三区日韩 | 成人一区而且| 国产亚洲网站| 欧美激情麻豆| 五月天久久777| 国产图片一区| 婷婷激情综合| 精品色999| 亚洲伊人精品酒店| 蜜桃av在线播放| 日韩av电影一区| 欧美日韩一二三四| 国产精品亚洲综合色区韩国| 久久久久免费av| 国产精品一二| 精品一区免费| 麻豆成人91精品二区三区| 最新亚洲激情| 精品久久美女| 亚洲久久视频| 99tv成人| 另类综合日韩欧美亚洲| 视频在线在亚洲| 日韩欧美中文| 国产极品一区| 亚洲九九精品| 婷婷丁香综合| 蜜臀国产一区| 国产极品嫩模在线观看91精品| 免费人成网站在线观看欧美高清| 精品一区不卡| 日韩成人av影视| 在线综合欧美| 久久精品高清| 成人在线免费观看91| 日韩一区二区三区高清在线观看 | 国产美女一区| 日韩精品首页| 精品亚洲二区| 久久狠狠久久| 一二三区精品| 黄色成人精品网站| 免费高潮视频95在线观看网站| 日本欧美在线| 亚洲精品看片| 精品一区欧美| 亚洲成人不卡| 国内精品麻豆美女在线播放视频| 色综合视频一区二区三区日韩| 日韩视频在线一区二区三区| 日韩欧美三级| 高清一区二区| 乱一区二区av| 美女视频一区在线观看| 欧美日韩夜夜| 国产日韩免费| 日韩成人精品一区二区三区 | 亚洲一级大片| 9国产精品视频| 国户精品久久久久久久久久久不卡| 国产一区日韩| 97人人精品| а√天堂8资源中文在线| 久久精品一区| 精品一区二区三区在线观看视频 | 精品视频97| 国产一区调教| 国产aⅴ精品一区二区三区久久| 精品香蕉视频| 国产中文在线播放| 91亚洲人成网污www| 亚洲黄色免费av| 精品国产成人| 深夜福利视频一区二区| 夜鲁夜鲁夜鲁视频在线播放| 美女网站视频一区| 国精品一区二区| 久久亚洲风情| 婷婷久久免费视频| 国产亚洲一区| 久久精品一区| 日韩黄色大片| 日韩国产网站| 一区在线免费| 亚洲专区视频| 国产美女视频一区二区| 欧美a在线观看| 91视频精品| 久久久久国产| 性欧美长视频| 97久久中文字幕| 国产极品模特精品一二 | 精品无人区麻豆乱码久久久| 黄色网一区二区| 亚洲成人不卡| 久久av一区| 亚洲人成网站在线在线观看| 欧美伊人影院| 国产一区三区在线播放| 99视频精品全部免费在线视频| 老司机久久99久久精品播放免费| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美亚洲一级| 成午夜精品一区二区三区软件| 久久精品免费一区二区三区 | 日韩精品91亚洲二区在线观看| 国产乱码精品一区二区三区四区| 精品视频自拍| 欧洲激情综合| 免费观看在线综合色| 国产日韩一区二区三免费高清| 成人污污视频| 成人av动漫在线观看| 天堂俺去俺来也www久久婷婷| 欧美国产视频| 欧美亚洲国产一区| 91精品日本| 色婷婷精品视频| 蜜桃视频一区二区| 老牛国内精品亚洲成av人片| 激情综合在线| 97se亚洲| 欧美日韩尤物久久| 久久先锋影音| 久久精品福利| 亚洲欧洲午夜| 国产毛片精品| 亚洲手机在线| 国产亚洲久久| 在线日韩电影| 久久av网址| 丝袜美腿亚洲一区二区图片| 国产极品一区| 欧美专区在线| 高清av不卡| 日本午夜精品视频在线观看| 久久久精品日韩| 国产欧美在线| 影音先锋久久| 精品黄色一级片| 日本 国产 欧美色综合| 国内精品伊人| 日韩中文av| 欧美成人基地 | 日韩成人免费| 在线看片日韩| 欧美日韩免费看片| 国产区精品区| 模特精品在线| 成人羞羞视频播放网站| 国产亚洲久久| 美女国产一区|