count(0)

 

select count(0) as user_total from(select distinct User_id from xyqj_log)
这条是将不重复的User_id的个数进行统计并保存在user_total中 这里面的count(0)怎么理解 ?

意思和count(*)或者count(column)是一样的
但是据说有个效率问题
因为COUNT(*)不单会进行全表扫描,也会对表的每个字段进行扫描。而COUNT('x')或者COUNT(COLUMN)或者COUNT(0)等则只进行一个字段的全表扫描


count(1),其实就是计算一共有多少符合条件的行。
1并不是表示第一个字段,而是表示一个固定值。
其实就可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1.
同理,count(2),也可以,得到的值完全一样,count('x'),count('y')都是可以的。一样的理解方式。在你这个语句理都可以使用,返回的值完全是一样的。就是计数。
count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。


count(0)/count(1)/count(*)之类包含所有列的统计,count(列名)只是对该列的统计。
count(0)/count(1)/count(*)的结果不排除值为NULL的数据,而count(列名)的结果排除了值为NULL的数据。
如果列名为主键,则count(列名)效率较count(1)高
如果列名不为主键,则count(1)效率较count(列名)高

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值