一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - mysql技巧之select count的區別分析

mysql技巧之select count的區別分析

2020-01-09 16:40mysql教程網 Mysql

在工作過程中,時不時會有開發咨詢幾種select count()的區別,我總會告訴他們使用select count(*) 就好。下文我會展示幾種sql的執行計劃來說明為啥是這樣。

1.測試環境

OS:Linux
DB:mysql-5.5.18
table:innodb存儲引擎

表定義如下:

mysql技巧之select count的區別分析

2. 測試場景與分析【統計表group_message的記錄數目】

(1)select count(*)方式

mysql技巧之select count的區別分析

(2)select count(1)方式

mysql技巧之select count的區別分析

(3)select count(col_name)方式

分別使用

select count(group_id)

select count(user_id)

select count(col_null)

mysql技巧之select count的區別分析

     通過上述測試結果可以看到,select count(*)和select count(1)都使用了group_id這個最短的二級索引??赡苡腥藭枮樯恫挥酶痰闹麈I索引【int類型】呢,這主要是因為innodb存儲引擎下,主鍵索引實質包含了索引和數據,掃描主鍵索引實際是掃描物理記錄,代價實質是最大的。再來看看幾種select count(col_name), count(group_id)使用了最短二級索引,因為該列就是索引列;而count(user_id)則使用了組合索引,由于user_id實質不能利用該索引,但掃描索引也能得到記錄數,而且比掃描物理記錄代價小,這里應該是mysql的一個優化;count(col_null)則不能使用索引,因為該列含有null值,所以效率最低。另外,對于含有null值的行,count(col_null)實際不會統計,這會與你想統計表記錄數目的初衷不符,比如測試表有852226條記錄,但col_null列只有1行非空,則統計結果如下:

mysql技巧之select count的區別分析

3.測試結論

mysql中,需要通過selct count 統計表記錄數目時,使用count(*)或count(1)就好。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 全彩成人18h漫画 | 深夜福利免费观看 | 天天爽天天操 | 日本高清视频网站www | 亚洲国产99在线精品一区二区 | 精品99一区二区三区麻豆 | 99久久精品国产一区二区 | 成人欧美一区二区三区白人 | 四虎在线永久视频观看 | 国产精品久久久久久网站 | 欧美成人中文字幕在线看 | 国产一区二区三区在线观看视频 | 99国产精品免费视频 | 国产精品永久免费视频观看 | 九九精品视频在线观看 | 成人免费在线视频网 | 亚州在线 | 久久成人精品免费播放 | av在线亚洲男人的天堂 | 美女一级ba大片免色 | 亚洲天堂2015| 99精品国产自产在线观看 | 毛片一区二区三区提莫影院 | 免费av在线看 | 亚洲性综合网 | 99热精品成人免费观看 | 好吊色青青青国产综合在线观看 | 色综合久久六月婷婷中文字幕 | 天天做日日做天天添天天欢公交车 | 91私密保健女子养生spa | 国产三级精品播放 | 国产第一综合另类色区奇米 | 欧美一二区 | 精品国产成人AV在线看 | 亚洲国产一区二区三区青草影视 | 日本视频高清 | 国内精品久久久久久久 | 成人伊人青草久久综合网破解版 | aaa一级毛片免费 | 日韩欧美一区黑人vs日本人 | 精品女同同性视频很黄很色 |