MySQL中count(1),count(*),count(某字段)等用法联系和区别
生活随笔
收集整理的這篇文章主要介紹了
MySQL中count(1),count(*),count(某字段)等用法联系和区别
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一. 從執(zhí)行結(jié)果來看
count(*):所有行進行統(tǒng)計,包括NULL行count(1):所有行進行統(tǒng)計,包括NULL行count(column):對column中非Null進行統(tǒng)計二. 從執(zhí)行效率上看
他們之間根據(jù)不同情況會有些許區(qū)別,MySQL會對count(*)做優(yōu)化。
(1)如果列為主鍵,count(列名)效率優(yōu)于count(1) (2)如果列不為主鍵,count(1)效率優(yōu)于count(列名) (3)如果表中存在主鍵,count(主鍵列名)效率最優(yōu) (4)如果表中只有一列,則count(*)效率最優(yōu) (5)如果表有多列,且不存在主鍵,則count(1)效率優(yōu)于count(*)三. count(1)原理
count(1),其實就是計算一共有多少符合條件的行。1并不是表示第一個字段,而是表示一個固定值。
其實就可以想成表中有這么一個字段:這個字段就是固定值1,count(1),就是計算一共有多少個1。
四. count(*)原理
count(*),執(zhí)行時會把星號翻譯成字段的具體名字,效果也是一樣的。
不過多了一個翻譯的動作,比固定值的方式效率稍微低一些。
總結(jié)
以上是生活随笔為你收集整理的MySQL中count(1),count(*),count(某字段)等用法联系和区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MyBatis-动态sql语句-if用法
- 下一篇: sql中limit的用法——数据库系列学