面试官问:SQL语句中你还认为count(1) 比count(*) 效率更高吗?

栏目:教育资源  时间:2023-07-31
手机版

  1. count(1) and count(*)

  2. count(1) and count(字段)

  两者的主要区别是

  1) count(1) 会统计表中的所有的记录数,包含字段为null 的记录。

  2) count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。即不统计字段为null 的记录。

  3. count(*) 和 count(1)和count(列名)区别

  执行效果上:

  count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL

  count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL

  count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计。

  执行效率上:

  列名为主键,count(列名)会比count(1)快

  列名不为主键,count(1)会比count(列名)快

  如果表多个列并且没有主键,则 count(1) 的执行效率优于 count(*)

  如果有主键,则 select count(主键)的执行效率是最优的

  如果表只有一个字段,则 select count(*)最优。

  4. 实例分析

  作者:BigoSprite blog.csdn.net/iFuMI/article/details/77920767

  公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!

  最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选,回复“加群”,即可入群!

  (微信小程序):3000+道面试题,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计等,在线随时刷题!

  特别推荐:专注分享最前沿的技术与资讯,为弯道超车做好准备及各种开源项目与高效率软件的公众号,「大咖笔记」,专注挖掘好东西,非常值得大家关注。点击下方公众号卡片关注。

  文章有帮助的话,点在看,转发吧!

上一篇:湖南浏阳:项目攻坚的浏阳之势
下一篇:普陀区领导干部“组团”赴松江开展培训

最近更新教育资源