`
talentluke
  • 浏览: 592189 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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(列名)高

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics