MySQL的count方法你真的用对了吗?

共 647字,需浏览 2分钟

 ·

2021-11-23 23:43

我们在日常工作中经常使用count方法来计算行数。


那么你知道count(*)、count(1)、count(列名)应该用哪个吗?


今天我们就来聊一聊这个问题吧!


01 执行效率

列名为主键时:count(列名)和count(1)和count(*)执行效率是一样的,因为explain中type类型都为index

列名不为主键时,而且列名没有创建索引,但是其他字段创建了索引:count(1)=count(*)>count(列名)。

因为expalin中的type类型count(1)和count(*)类型都为index,而count(列名)的type类型为all全表扫描。

列名不为主键,但是列名创建索引:count(1)=count(*)=count(列名),因为explain中type类型都为index。

如果表只有一个字段,则三者的执行效率一样。

02 主要区别

count(1)会统计表中的所有的记录数,包含字段为null的记录。

count(字段)会统计该字段在表中出现的次数,忽略字段为null的情况,即不统计字段为null的记录。

count(*)会统计表中的所有的记录数,包含字段为null的记录。

--THE END :下面是我的官方账号,欢迎关注--

浏览 17
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报