大家好,又见面了,我是你们的朋友全栈君。
最近写了一些SQL,在用count进行统计的时候,我一般都习惯用count(*),看同事的代码有事会用count(1),那么count(*),count(1)和count(某一列)有什么区别呢?
首先从查询结果来看:
count(*)和count(1)统计的是整张表的所有行。
count(列):如果统计的列不允许为null,则统计的也是所有行,当这一列有null值时,count将忽略null的行。
接着从查询效率上来看:
网上说法不一,后来请教了公司的DBA,DBA是这么说的:这个具体得看表,结果一样 数据量不大的话,没什么区别,如果数据量大并有主键,count(1)会好一点。
于是在自己的数据库里进行测试:
1.4000+数据,查询时间一样,都是0.003 sec
2.14W+数据,count(1): 0.078 sec
count(*): 0.059 sec
count(id): 0.067 sec
从结果上来看,是count(*)比较快。(查询结果是在id是主键,并且是索引的前提下产生的)
以上是我对他们三个的一点点认识,感觉还不是很全面,大家还有什么看法,欢迎讨论。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105667.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...