count(1)与count(*)区别

 我来答
小琪聊塔罗牌
高粉答主

2022-11-25 · 小琪带你一起去聊塔罗星座。
小琪聊塔罗牌
采纳数:904 获赞数:50709

向TA提问 私信TA
展开全部

count(1) and count(*)两者的主要区别是:

1、执行效果上:

count(1),其实就是计算一共有多少符合条件的行。

1并不是表示第一个字段,而是表示一个固定值。

其实就可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1。count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。

2、执行效率上:

他们之间根据不同情况会有些许区别,MySQL会对count(*)做优化。(1)如果表中只有一列,则count(* )效率最优。(2)如果表有多列,且存在主键,count (主键列名)效率最优,其次是:count (1) >count( *)。(3)如果表有多列,且不存在主键,则count(1 )效率优于count( *)

3、从执行结果来说:

1、count(1)和count (*)之间没有区别,因为count (*) count (1)都不会去过滤

2、(排除)空值,但count (列名)就有区别了,因为count (列名)会过滤空值。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式