站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

MySQL關(guān)于Count函數(shù)的用法區(qū)別總結(jié)

前言

大家好,MySQL關(guān)于Count你知道多少

統(tǒng)計數(shù)據(jù)的需求在我們?nèi)粘i_發(fā)中是非常容易遇到了,MySQL也支持多種的計算的函數(shù),

接下來我們來看一看他們之間有什么區(qū)別,以及他們是否存在一些坑。【推薦學(xué)習(xí):MySQL視頻教程】

count(*)、count(1)、count(id)的區(qū)別

count的含義:count() 是一個聚合函數(shù),對于返回的結(jié)果集,一行行地判斷,如果 count 函數(shù)的參數(shù)不是 NULL,累計值就加 1,否則不加。最后返回累計值。

count(字段)比較特殊,則表示返回滿足條件的數(shù)據(jù)行里面,參數(shù)“字段”不為 NULL 的總個數(shù)

分析性能差別原則

  • server 層要什么就給什么;

  • InnoDB 只給必要的值;

  • 現(xiàn)在的優(yōu)化器只優(yōu)化了 count(*) 的語義為“取行數(shù)”,其他“顯而易見”的優(yōu)化并沒有做

例子:

count(主鍵 id) 來說,InnoDB 引擎會遍歷整張表,把每一行的 id 值都取出來,返回給 server 層。server 層拿到 id 后,判斷是不可能為空的,就按行累加。

count(1) 來說,InnoDB 引擎遍歷整張表,但不取值。server 層對于返回的每一行,放一個數(shù)字“1”進去,判斷是不可能為空的,按行累加。

count(字段),server要字段,就返回字段,如果字段為空,就不做統(tǒng)計,字段的值過大,都會造成效率低下。

效率排序

count(字段)<count(主鍵 id)<count(1)≈count(*)
登錄后復(fù)制

為什么count(*)最快?

優(yōu)化器做了工作,找到最小的數(shù)來遍歷。

InnoDB 是索引組織表,主鍵索引樹的葉子節(jié)點是數(shù)據(jù),而普通索引樹的葉子節(jié)點是主鍵值。所以,普通索引樹比主鍵索引樹小很多。對于 count(*) 這樣的操作,遍歷哪個索引樹得到的結(jié)果邏輯上都是一樣的。因此,MySQL 優(yōu)化器會找到最小的那棵樹來遍歷。在保證邏輯正確的前提下,盡量減少掃描的數(shù)據(jù)量,是數(shù)據(jù)庫系統(tǒng)設(shè)計的通用法則之一。

關(guān)于NULL的幾個坑

// 數(shù)據(jù)中存在null值數(shù)據(jù) select count(*) from audit_log a; 結(jié)果:1  select count(id) from audit_log a; 結(jié)果:0
登錄后復(fù)制

我們看到count的結(jié)果不一致,記錄數(shù)應(yīng)該是1,count(id)卻等于0

這是因為count(字段)是不統(tǒng)計,字段值為null的值

所以在字段為非空字段的情況下,需要使用count(*)來解決這個問題。

count(*)小結(jié)

  • MyISAM 表雖然 count(*) 很快,但是不支持事務(wù);

  • show table status 命令雖然返回很快,但是不準(zhǔn)確;

  • InnoDB 表直接 count(*) 會遍歷全表,雖然結(jié)果準(zhǔn)確,但會導(dǎo)致性能問題。

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
九九热这里只有在线精品视| 国产精品原创巨作?v网站| 99久久人妻无码精品系列蜜桃| 久久国产精品99久久久久久老狼| 国产精品伊人久久伊人电影| 亚洲av日韩综合一区久热| 精品国产系列在线观看| 国产精品天天影视久久综合网 | 久久精品免看国产| 国产在线无码精品电影网| 国产精品永久久久久久久久久| 青草青草久热精品视频在线观看| 亚洲日韩在线第一页| 国产成人综合久久精品| 日韩久久精品一区二区三区| 久久精品免费一区二区喷潮| 国内精品乱码卡1卡2卡3免费| 精品人妻无码区在线视频| 久久精品毛片免费观看| 99精品中文字幕| 久久久久成人精品免费播放动漫| 国产亚洲精品自在久久| 亚洲欧洲精品无码AV| 中国大陆精品视频XXXX| 久久无码精品一区二区三区| 国产精品小黄鸭一区二区三区| 动漫精品专区一区二区三区不卡| 日韩精品无码久久一区二区三| 日韩人妻潮喷中文在线视频| 日韩电影免费在线观看视频| 2019日韩中文字幕MV| 久久久无码精品亚洲日韩按摩| 亚洲av日韩av无码黑人| 中文字幕日韩在线| 日韩一区二区免费视频| 伊人精品视频在线| 精品一区二区三区视频在线观看| 午夜在线视频91精品| 国产精品爱搞视频网站 | 亚洲中文久久精品无码1| 在线观看日韩精品|