南京小程序开发,南京H5,南京公众号开发,南京网站建设,南京网站制作,南京网站设计,南京做网站,南京网站开发,南京网站建设公司,南京网站制作公司,南京网站设计公司
-->

电话:

400-885-7836

微信:

南京小程序开发,南京H5,南京公众号开发,南京网站建设,南京网站制作,南京网站设计,南京做网站,南京网站开发,南京网站建设公司,南京网站制作公司,南京网站设计公司

商务QQ:

923368187

南京小程序开发,南京H5,南京公众号开发,南京网站建设,南京网站制作,南京网站设计,南京做网站,南京网站开发,南京网站建设公司,南京网站制作公司,南京网站设计公司

联系我们

Slide
无需任何编程和设计经验,用户可在3分钟之内快速创建小程序,最快5分钟微信审核通过上线

操作步骤: 扫码登录 -> 创建店铺 -> 授权小程序 -> 选择适合的模板 -> 体验码体验 -> 发布小程序

当前位置:首页 > mysql > mysql 为什么count(*)快于count(id)

所有分类

mysql 为什么count(*)快于count(id)

其实,挺正常的,count的用法大概有两个,不过一般大家不太注意:

  1. 统计某个列( 俗称字段 )有多少个有效值,也就是值不是null的有多少个。
  2. 统计记录有多少行,我背诵过的规则是这样的:当count()括弧的表达式被认为不可能为空时,就会自动忽略所有列,直接统计结果记录一共多少行。曾经以为,*的时候,会自动扩展展开所有的列,其实不是。可能是受select(星号)影响。
  3. 当不指定条件的时候,count是很快的,指定条件速度会下降。

mysql在设计上,count(星号)性能是很快的,即便是加上where,它就是要比count(col)快,因为count(col)要判断每行是不是NULL,而count( 星号 )也并不是想象中那样扩展所有列,它会直接忽略列而直接统计结果集行数,只要有行就纳入统计,具体这行每列的值是什么对它来说根本不重要,跟select(*)是不同的。

结论就是,如果你要统计记录条数一共多少条,一定要用count(*),而不是count(col),它的性能会更好。当引擎发现你的col不可能为null的时候,它会将col转换成星号,如果楼主用的id时主键,那么其实会被转化成星号,这转化也是耗费性能的。

补充一下:myisam引擎状况下,如果不指定where条件,那么myisam是很迅速,因为不指定条件会直接读取存储引擎存储的一个特殊字段,值是总行数,但是一旦指定where条件,迅速的神话也就没了,沦落和其他引擎差不多了。

易企达10年行业沉淀!专业小程序、公众号H5、APP定制开发
拨打电话立享优惠

400-885-7836

点击获取报价

本文原地址:https://www.eqiday.cn/66.html
郑重声明内容版权声明:除非注明,否则皆为本站原创文章。如有侵权联系进行删除!

无需任何编程和设计经验,用户可在10分钟之内快速创建小程序,所有功能免费!

操作步骤: 注册 -> 登录 -> 创建店铺 -> 授权小程序 -> 上传代码 -> 生成体验码体验 -> 发布小程序

免费制作小程序