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

企业网站建设预算方案环球军事新闻最新消息

企业网站建设预算方案,环球军事新闻最新消息,网站开发建设及推广合同,天猫网站左侧导航用js怎么做案例 正常情况 有一个表t ( id, a , b ),id是主键索引,a是Normal索引。 正常情况下,针对a进行查询,可以走索引a 并且查询的数量和预估扫描行数是差不多的,都是10001行 奇怪的现象 随着时间的变化,后…

案例

正常情况

有一个表t ( id, a , b ),id是主键索引,a是Normal索引。

正常情况下,针对a进行查询,可以走索引a
在这里插入图片描述
并且查询的数量和预估扫描行数是差不多的,都是10001行
在这里插入图片描述

奇怪的现象

随着时间的变化,后面可能就会发生下面的情况
在这里插入图片描述
根据explain计划,我们发现数据还是那么多,但是不走a索引了,并且优化器知道有a索引,但是最终还是走了全表扫描。

优化器的逻辑

先了解一下优化器
选择索引是优化器的工作,而优化器选择索引的目的,是找到一个最优的执行方案,并用最小的代价去执行语句。在数据库里面,扫描行数是影响执行代价的因素之一。扫描的行数越少,意味着访问磁盘数据的次数越少,消耗的 CPU 资源越少(扫描行数并不是唯一的判断标准,优化器还会结合是否使用临时表、是否排序等因素进行综合判断)

下面只讨论扫描行数带来的影响
那么优化器是怎么去估算需要扫描多少行?
在这里插入图片描述
我们可以通过命令看到有一个Cardinality(基数),选择索引需要扫描的行数就是通过它来判断的,它代表一个索引上不同的值的个数,值越大说明区分度越高,那么越有可能走这个索引

优化器的选择一定对么?

上面看到针对下面这个sql,优化器觉得全表扫描更合适,但实际上真的是速度最快的么?

select * from t where a between 10000 and 20000;

我们实际执行一下:
在这里插入图片描述
不接受优化器的建议,强行走a索引执行一下:
在这里插入图片描述
重点看3个指标:Query_time(执行耗时)、Rows_sent(返回行数)、Rows_examined(扫描/行数)
我们发现强行走索引a其实更快,实际扫描行数也少。那么为什么优化器不走索引a呢?

我们再执行一个命令(更新表的统计信息):

ANALYZE TABLE t;

然后我们再看一下执行计划:

explain select * from t where a between 10000 and 20000;

在这里插入图片描述
发现优化器竟然又选择了索引a,说明是因为统计信息不准确,没有及时更新导致优化器进行了错误的选择。
接着实际执行一下:

select * from t where a between 10000 and 20000;

在这里插入图片描述
我们发现实际的扫描行数和预估的扫描行数对上了,并且也确实走了索引a,耗时也降下来了
最后我们再看一下索引的统计信息
在这里插入图片描述
统计信息确实和上面不一样了,更新了。但是这里有个问题是:虽然统计信息不一样了(能确保确实更新索引统计信息的sql起作用了)但统计信息和一开始也差不多,为什么Cardinality值差不多的情况下,优化器做出了不一样的选择?
因为实际上表数据经历了大量的删除、新增操作,Cardinality不会更新一些还未提交的事务数据,所以看似基数差不多,实际上基数不一样优化器对主键的判断是基于实际表行数来判断的,所以主键的判断是准的,不准的是其他索引的统计信息。

总结

本文讨论了Mysql(InnoDB)在索引统计信息不准确或更新不及时的情况下,优化器基于统计信息进行粗估的执行计划,可能会选错索引。
我们一般应对的方法如下:

  1. 更新索引统计信息
  2. 修改SQL语句强制走固定索引
  3. 新增索引(比如上面新增一个索引a,b)
  4. 删除索引(假设优化器选择了索引b,确保该索引没有其他作用的前提下,那么删掉索引b,可能就会走索引a了)
http://www.dtcms.com/wzjs/514965.html

相关文章:

  • asp伪静态网站如何做筛选如何建立网站的步骤
  • 黑河做网站哪家好优化大师怎么提交作业
  • app建设网站公司哪家好关联词有哪些五年级
  • 个人注册网站.com如何制作企业网站
  • 高新区建设局网站优化seo招聘
  • 做海鲜批发去哪个网站网络营销的职能是什么
  • 网站搭建工具的种类手机网站
  • WordPress开网店百度seo
  • 网站如何做超链接怎么搭建一个网站
  • 淘宝网作图做网站营销客户管理系统
  • 济南网站建设制作设计网站建设推广服务
  • 宿迁房产网备案查询榆林百度seo
  • wordpress模板结构详解seo是什么意思职业
  • 如何做自己的公司网站中国站长站
  • 自建网站的好处上海全网营销推广
  • 我想做直播网站该怎么做买外链网站
  • 帝国cms 关闭网站做一个网站要多少钱
  • 哈尔滨最专业的网站建设软件开发公司排名
  • 品网站建设公司搜索引擎排名2021
  • 哪些网站做二手挖机易观数据app排行
  • 做美食网站的图片大全张雷明任河南省委常委
  • 百度收录链接提交入口百色seo快速排名
  • 没有备案的网站使用微信雅虎搜索引擎中文版
  • 汉口网站推广公司厦门人才网官方网站
  • 有没有做外贸的网站啊百度投放广告流程
  • 投资网站建设会计培训班推荐
  • 西安网络运营公司有哪些seo关键词优化
  • 天津网站建设招聘网站建设公司是怎么找客户
  • 产品展示型网站头条新闻今日头条官方版本
  • 网店设计素材seo优化sem推广