当前位置: 首页 > news >正文

中能建设集团电子商务网站企业网络贷款平台

中能建设集团电子商务网站,企业网络贷款平台,南充房产信息查询系统,检索网站怎么做今天和大家聊一下mysql中的count()方法 我们日常开发中#xff0c;经常会用到count()命令#xff0c;有的人用count(*)#xff0c;有的人用count(1)#xff0c;还有的人用count(id)#xff0c;那么这几种写法都有什么区别呢#xff1f;哪种方法效率更高呢#xff1f;今…今天和大家聊一下mysql中的count()方法 我们日常开发中经常会用到count()命令有的人用count(*)有的人用count(1)还有的人用count(id)那么这几种写法都有什么区别呢哪种方法效率更高呢今天我们就来解密一下 1 首先我们要先了解count()方法的原理 count()方法的作用就是计算当前sql语句所能查到的非NULL的行数 mysql分为server层和存储引擎层具体结构如下 常见的存储引擎是InnoDB、myisam。 为什么要介绍引擎种类呢因为count()方法在不同的存储引擎下他的实现方式是不一样的。 例如语句 select count(*) from table1; 在myisam引擎的数据表里会有个单独的字段用来记录当前表里有几行数据因此当查询行数的时候直接返回这个字段就可以了速度自然是相当迅速。 在InnoDB引擎里实现方式则是选择体积最小的索引树然后通过遍历叶子节点的个数以此来获取全表的数据。 所以在InnoDB中当count()需要扫描的数据量越大的时候所消耗的时间就会越长。 2 也许有人会问为什么InnoDB不能像MyIsam那样单独记录表行数呢 MyIsam和InnoDB最大的区别就是MyIsam不支持事务InnoDB支持事务。 而事务有四种隔离级别其中默认的就是可重复读。 InnoDB通过MVCC实现了可重复读隔离级别事务开启之后多次执行同样的select执行的结果都会是同样的数据。 我们看个例子 如上图所示有两个事务A、B一开始table1表里就2条数据事务A也确实查到了2条在A第一次查完之后事务B插入了一条数据此时table1表里会有3条数据事务A再次查询还是只能查到2条数据。这就是MVCC保证了在同一事务中查询的结果是一样的。 也正因为有事务隔离级别所以不同的事务在同一时间下查询的表内数据会是不一致的以此InnoDB是没办法像MyIsam那样在表里单纯的加个字段来存储表数据行数的。 3 回到正题count()括号里可以放置各种字段甚至是非字段那么他们都有什么区别呢 count方法的大原则是server层会从innodb存储引擎里读来一行行数据并且只累计非null的值。但这个过程根据count()方法括号内的传参有略有不同。 (1) count(*) server层拿到innodb返回的行数据不对里面的行数据做任何解析和判断默认取出的值肯定都不是null直接行数1。 (2) count(1) server层拿到innodb返回的行数据每行放个1进去默认不可能为null直接行数1。 (3) count(某个列字段) 由于指明了要count某个字段innodb在取数据的时候会把这个字段解析出来返回给server层所以会比count(1)和count(*)多了个解析字段出来的流程。 如果这个列字段是主键id主键是不可能为null的所以server层也不用判断是否为nullinnodb每返回一行行数结果就1.如果这个列是普通索引字段innodb一般会走普通索引每返回一行数据server层就会判断这个字段是否为null不是null的情况下1。当然如果建表sql里字段定义为not null的话那就不用做这一步判断直接1。如果这个列没有加过索引那innodb可能会全表扫描返回的每一行数据server层都会判断这个字段是否为null不是null的情况下1。同上面的情况一样字段加了not null也就省下这一步判断了。 现在应该对他们的执行效率有数了吧 大概如下 count(*) count(1) count(主键id) count(普通索引列) count(未加索引列) 所以说count(*)是最快的
http://www.dnsts.com.cn/news/192413.html

相关文章:

  • 吉林省建设厅网站特殊工种免费的建设网站软件
  • 网站优化推广平台dede wap网站模板下载
  • 甘肃省嘉峪关建设局网站广州最新消息今天
  • 门户类网站前台安卓市场下载手机版
  • 如何免费建立一个网站新闻10条摘抄大全
  • 厦门外贸网站建设报价表网站建设推广代理
  • 莱芜找工作网站阿里云服务器做盗版视频网站
  • 专门做it招聘的网站wordpress请求接口数据库
  • 做网站开发学什么语言网站规划有哪些内容
  • 免费自创网站公司名称大全集最新3个字
  • 一个网站多少钱?wordpress跳过广告插件
  • 京东自营入驻费用一览表2022企业站seo外包
  • 站长工具seo词语排名最新国际形势最新消息
  • 移动网站建设方案wordpress页面生成二维码
  • 重庆网站平台建设多语言商城系统
  • 在国税网站更换购票员怎么做上海外贸soho网站建设
  • php 做的应用网站基于构件的软件开发流程
  • 课程网站建设情况wordpress企业主题排行榜
  • 英文网站seowordpress更换ssl
  • 内力网站建设0元开店0元铺货无加盟费开网店
  • 网站模板 招聘电子商务系统的构成
  • 装饰网站建设软件下载维护网站英语
  • 滨海新区做网站网站名称可以是域名
  • 像饿了码的网站建站有吗国外自建站怎么样
  • o2o分销系统网站建设wordpress title description
  • 电影网站怎么制作网站做一半能退吗
  • 学院网站建设项目的成本计划书做网站的个人总结
  • 做h5免费的网站有建设工程施工合同范文
  • 网站空间续费多少钱wordpress文章统计
  • 建设工程造价管理协会网站安阳县实验中学