今天看啥  ›  专栏  ›  程序员晓梦

面试官:count(1)、count(*) 与 count(列名) 有什么区别?

程序员晓梦  · 公众号  · 大数据 数据库  · 2026-01-07 22:41
    

主要观点总结

本文主要讨论了SQL中的count函数,包括count(1)、count(*)和count(字段)的使用及其区别。

关键观点总结

关键观点1: count(1)和count(*)的效果及执行计划

在数据量较大时,count(1)和count(*)的执行时间相差无几;在数据量较小(1W以内)时,count(1)可能会比count(*)用时少。在有聚集索引的情况下,两者基本没有差别。

关键观点2: count(1)和count(字段)的区别

count(1)会统计表中的所有记录数,包括字段为null的记录;而count(字段)只会统计该字段在表中出现的次数,忽略字段为null的情况。

关键观点3: count(*)、count(1)和count(列名)的区别

count(*)统计所有列,相当于行数,不会忽略null值;count(1)相当于用1代表代码行,同样不会忽略null值;而count(列名)只统计特定列,会忽略该字段值为null的计数。在执行效率上,如果列名为主键,count(列名)会比其他两者更快;否则,count(1)的执行效率可能更优。


免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。 原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过 【版权申诉通道】联系我们处理。

原文地址: 访问原文地址 (快捷配置)
总结与预览地址:访问文章预览/总结
文章地址: 访问文章快照