sql中count(*)、count(col)、count(1)区别

count(*)和count(列)根本就是不等价的,count(*)是针对于全表的,而count(列)是针对于某一列的,如果此列值为空的话,count(列)是不会统计这一行的。

也就是说count(列)会用到索引,并且会过滤掉该列为null的那行。

而count(*)是全表扫描,并且只要某一条数据有一列不为null,那就会统计到这条数据。

 

count(1)可以理解为表里有一列数据都为1的列。

count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。

相关文章

case when概述 sql语句中的case语句与高级语言中的switch语句...
其实很简单,只是为了忘记,做个记录,用的时候方便。 不管是...
1.进入服务,找到mysql服务,在属性里找到mysql的安装路径 2...
count(*)和count(列)根本就是不等价的,count(*)是针对于全表...
order by的列,必须是出现在group by子句里的列ORDER BY要在...
having是用在聚合函数的用法。当我们在用聚合函数的时候,一...