自学内容网 自学内容网

sql专题 之 count()区别

count(1)

count(1) 是对结果集中的每一行计数,不关注具体的列,只是计数行数。
每一行都计为常数1
等同于 count(*),性能上基本一致,但有时可能用于表达清晰性

count(*)

与count(1)类似。
计算表中所有符合条件的行数,无论行内列值是否为空

通常推荐count(*)作为行计数的通用写法
因为在innoDB引擎中,会优化为直接统计页数上的数量

count(列名)

是对特定列进行非空值的计数。只有当该列有实际值才会被计入。

常用于统计特定字段的有效数据量时,例如有多少学生的son不为空→count(sno)

比较

  • 当列中有大量的null值时,count(列名)需要遍历和检查每一行而count(*)不需要
  • 故从性能上来说,count(*)的性能要优于count(列)

原文地址:https://blog.csdn.net/oneouto/article/details/143637824

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!