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

高端网站建设询问磐石网络猎头公司电话

高端网站建设询问磐石网络,猎头公司电话,网络工程师证书含金量,做一个小程序开发统计一张表的总数量#xff0c;是我们开发中常有的业务需求#xff0c;通常情况下#xff0c;我们都是使用 select count(*) from table SQL 语句来完成。随着业务数据的增加#xff0c;你会发现这条语句执行的速度越来越慢#xff0c;为什么它会变慢呢#xff1f; 为什…统计一张表的总数量是我们开发中常有的业务需求通常情况下我们都是使用 select count(*) from table SQL 语句来完成。随着业务数据的增加你会发现这条语句执行的速度越来越慢为什么它会变慢呢 为什么会变慢想要得到答案就需要知道 MySQL 是如何统计总数量的先说一个前提吧count(*) 的具体实现是由存储引擎实现的也就是说不同的存储引擎实现的方式不一样。标题为什么select count( * ) from table在 InnoDB 引擎中比 MyISAM 慢也是高频面试题。 InnoDB和MyISAM 是我们常用的 MySQL 存储引擎所以主要对比一下 count(*) 在 InnoDB 和 MyISAM 中的实现 「在 MyISAM 存储引擎中把表的总行数存储在磁盘上当执行 select count(*) from table 时直接返回总数据」。「在 InnoDB 存储引擎中跟 MyISAM 不一样没有将总行数存储在磁盘上当执行 select count(*) from table 时会先把数据读出来一行一行的累加最后返回总数量」。 知道了 InnoDB 和 MyISAM 引擎 count(*) 实现之后为什么select count(*) from table在 InnoDB 引擎中比 MyISAM 慢应该有答案了吧但是这个结论需要有一个前提就是统计 SQL 不带过滤条件。如果 统计数量 SQL 语句为select count(*) from table where x 23那么在 MyISAM 中就不一定比 InnoDB 快了。 「InnoDB 中 count(*) 语句是在执行的时候全表扫描统计总数量所以当数据越来越大时语句就越来越耗时了」为什么 InnoDB 引擎不像 MyISAM 引擎一样将总行数存储到磁盘上这跟 InnoDB 的事务特性有关由于多版本并发控制MVCC的原因InnoDB 表“应该返回多少行”也是不确定的。 不妨用一个例子来说明一下假设现在 t 表中有 10000 条数据现在有三个用户同时访问的会话 会话 A 先启动事务并查询一次表的总行数。会话 B 启动事务插入一行后记录后查询表的总行数。会话 C 先启动一个单独的语句插入一行记录后查询表的总行数。 会话执行流程表 会话A会话B会话Cbegin;select count(*) from tableinsert into table (插入一行)begin;insert into table(插入一行)select count(*) from table;(返回10000)select count(*) from table;(返回10002)select count(*) from table;(返回10001) 假设从上到下是按照时间顺序执行的同一行语句是在同一时刻执行的。可以看出在最后时刻三个会话返回的总行数不一样。 出现不一样的结果跟 InnoDB 存储引擎有关系「在默认隔离级别可重复读的情况下通过多版本并发控制MVCC来实现每一行记录都需要判断自己是否对这个会话可见因此在统计总数量时InnoDB 只好把数据一行一行的读取出来判断只有当前会话可见的才纳入统计中」。所以同一时刻不同会话查询到的数量就不一样。 InnoDB 引擎在 count(*)语句上也做了优化我们知道在 InnoDB 存储引擎中是以索引组织表的方式存储数据主键索引树上叶子节点存放在所有的数据而普通索引树的叶子节点是主键值所以普通索引树会比主键索引树小很多但是数量是一样的也就是说遍历主键索引树和普通索引树得到的结果都是一样的。MySQL 就利用了这一特性在 InnoDB 中执行 select count(*) from table 语句时MySQL 优化器会找到最小的那棵索引树来遍历这样可能就可以减少加载次数在一定程度上提升了 count(*)的执行效率。
http://www.w-s-a.com/news/557755/

相关文章:

  • 徐州品牌网站建设wordpress多重筛选页面
  • 网站改版提示无需改版个人怎么申请微信小程序
  • 电子商务网站建设的简要任务执行书可以注册免费网站
  • 公司网站设计需要什么豪爵铃木摩托车官网
  • 建收费网站合肥地区网站制作
  • 自己做头像网站小网站建设公司
  • 电子商务建设与网站规划wordpress linux安装
  • wordpress新手建站win8网站模版
  • 网站的简单布局孝感 商务 网站建设
  • 湖北手机版建站系统价格优化网站内容
  • 网站后台登录不显示验证码软文发布网站
  • 企业微网站建设方案收费的网站如何免费
  • 平昌县建设局网站中国500强企业有哪些
  • 网站开发制作的流程是什么网页打不开显示不安全怎么办
  • 网络网站开发设计安徽建设工程信息网怎么打不开了
  • 百度网站推广申请深圳公众号制作
  • 百度站长怎么做网站维护中国深圳航空公司官网
  • xampp安装网站模板海南一家天涯社区
  • 网站建设 管理系统开发仿租号网站源码网站开发
  • 怎么自己弄网站免费网站设计用什么软件
  • 网站分几种access做网站数据方法
  • 网站默认图片s001网站建设公司
  • 淘宝的电子商务网站的建设东莞哪里有网站制作公司
  • 西安网站制作怎么联系wordpress登陆界面打开慢
  • 高端工作网站网站推广seo代理
  • 一般找素材都是做哪几个网站呢推广引流工具
  • 必须做网站等级保护html网页设计题库
  • 移动端网站开发 float手机在线建网站
  • 教育网站模板下载做汽车网站开题报告的意义
  • 网站首页做后台链接昌平网站制作