成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

MySQL中count(字段)、count(主鍵id)、count(1)和count(*)的區(qū)別有哪些

這篇文章主要介紹MySQL中count(字段) 、count(主鍵 id) 、count(1)和count(*)的區(qū)別有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

目前成都創(chuàng)新互聯(lián)公司已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、陽谷網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

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

所以,count(*)、count(1)和count(主鍵 id) 都表示返回滿足條件的結(jié)果集的總行數(shù);而 count(字段),則表示返回滿足條件的數(shù)據(jù)行里面,參數(shù)“字段”不為 NULL 的總個數(shù)。

至于分析性能差別的時候,記住這么幾個原則:

  • server 層要什么就給什么;

  • InnoDB 只給必要的值;

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

count(可空字段)

掃描全表,讀到server層,判斷字段可空,拿出該字段所有值,判斷每一個值是否為空,不為空則累加

count(非空字段)與count(主鍵 id)

掃描全表,讀到server層,判斷字段不可空,按行累加。

count(1)

掃描全表,但不取值,server層收到的每一行都是1,判斷不可能是null,按值累加。

注意:count(1)執(zhí)行速度比count(主鍵 id)快的原因:從引擎返回 id 會涉及到解析數(shù)據(jù)行,以及拷貝字段值的操作。

count(*)

MySQL 執(zhí)行count(*)在優(yōu)化器做了專門優(yōu)化。因為count(*)返回的行一定不是空。掃描全表,但是不取值,按行累加。

看到這里,你會說優(yōu)化器就不能自己判斷一下嗎,主鍵 id 肯定是非空的,為什么不能按照 count(*) 來處理,多么簡單的優(yōu)化。當然 MySQL 專門針對這個語句進行優(yōu)化也不是不可以。但是這種需要專門優(yōu)化的情況太多了,而且 MySQL 已經(jīng)優(yōu)化過 count(*) 了,你直接使用這種語句就可以了。

性能對比結(jié)論

count(可空字段) < count(非空字段) = count(主鍵 id) < count(1) ≈ count(*)

以上是“MySQL中count(字段) 、count(主鍵 id) 、count(1)和count(*)的區(qū)別有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

文章題目:MySQL中count(字段)、count(主鍵id)、count(1)和count(*)的區(qū)別有哪些
網(wǎng)頁鏈接:http://jinyejixie.com/article32/jjjgpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、微信公眾號、網(wǎng)站設(shè)計、、電子商務(wù)、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
合山市| 新泰市| 静宁县| 阳山县| 重庆市| 绩溪县| 武川县| 浑源县| 革吉县| 固始县| 海阳市| 印江| 东乡族自治县| 梨树县| 罗城| 喜德县| 温州市| 阳高县| 玛纳斯县| 噶尔县| 新民市| 枝江市| 榆林市| 玉屏| 龙游县| 安化县| 乐昌市| 六枝特区| 玛纳斯县| 安阳市| 威海市| 吴川市| 永登县| 东兰县| 光山县| 泰来县| 云和县| 抚顺县| 麻栗坡县| 吉木萨尔县| 德令哈市|