日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库面试题【十九、count(字段) count(主键 id) count(1)count(*)的区别】

發(fā)布時間:2024/8/26 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库面试题【十九、count(字段) count(主键 id) count(1)count(*)的区别】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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(*)

總結(jié)

以上是生活随笔為你收集整理的数据库面试题【十九、count(字段) count(主键 id) count(1)count(*)的区别】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。