一 explain
  1 扫描行数根据的是表的统计元数据
  2 索引的元数据具体指的就是show index from查到的索引的区分度,索引的区分度越高越好
  3 表的元数据是定期收集,所以可能不准确
  4 如果感觉explain不准确,可以用analyze table t命令重新收集
  5 元数据不准确的场景大多出现在大量删除数据和插入数据场景,针对大表尤其如此
二 元数据收集
  参数 innodb_stats_persistent=ON 默认会持久化到内存 默认打开
  参数 innodb_stats_auto_recalc 这个参数控制着在表中行的数量改变超过10%的时候,是否重新收集统计信息 这个收集的动作是异步的,在执行完大的dml后,可能会过一段时间才重新收集统计信息 默认打开
  参数 innodb_stats_persistent_sample_pages 采样使用的页数 默认20 1 调大可能使analyze命令缓慢,加重负担 2调小可能使大量的执行计划产生误区,并不建议调整此值
三 mysql优化器选择错误索引的方法
  1 采用force index强制走某项索引,但是这可能导致一个问题,以后系统迁移或者索引名变更会导致问题
  2 改写sql语句,让mysql优化器进行再次判断,选择正确的索引
  3 直接删除索引本身,让mysql优化器无法选择该索引
四 总结
 1 如果出现mysql执行计划不准确的情况下,可以采用上述方式进行处理,一般情况下,出现索引判断失误的情况比较少

五 明显失效的几个场景

1 当range出现  row扫描为1 ROW时候

2  扫描的行数远远多于表本身的数据量

转载于:https://www.cnblogs.com/danhuangpai/p/10095001.html

mysql 查询优化 ~ explain与索引失效相关推荐

  1. mysql查询优化explain命令详解

    转载自 mysql查询优化explain命令详解 mysql查询优化的方法有很多种,explain是工作当中用的比较多的一种检查方式.explain翻译即解释,就是看mysql语句的查询解释计划,从解 ...

  2. MySQL 字符集不一致导致索引失效的一个真实案例

    文章目录 问题描述 问题分析 总结 大家好,我是只谈技术不剪发的 Tony 老师.今天给大家分析一个由于 MySQL 字符集不一致导致索引失效的案例. 问题描述 有个朋友给我发来一个问题,说是他们的系 ...

  3. MySQL之EXPLAIN(索引优化)

    EXPLAIN关键字 ①作用:模拟优化器执行SQL查询语句,分析查询语句或表结构的性能瓶颈 可以看出:表读取顺序.可使用索引.数据读取操作操作类型.实际使用的索引 表之间的引用.每张表的物理查询行数 ...

  4. MySQL查询优化-explain

    2019独角兽企业重金招聘Python工程师标准>>> 一.MySQL 查询优化器是如何工作的         MySQL 查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索 ...

  5. Mysql 多表联查索引失效问题

    问题:mysql cpu占用率100%,然后查看了一下sql 四表联查一张表进行了全盘检索 找了很久,结论是其他三个表的关联字段的字符集是utf8.一张表的关联字段的字符集是utf8mb4 把关联字段 ...

  6. mysql查询where后面索引失效_where条件索引失效情况

    虽然说索引在使用上可能有种种限制,但是还是在数据库设计中被充分利用.因为在大部分情况下索引还是被用来提高数据库性能的一个工具.不过有些数据库工程师往往会犯一些低级的错误,导致索引失效.如在Where条 ...

  7. mysql聚合索引创建_为 MySQL 查询优化选择最佳索引

    我们的许多用户.开发者和数据库管理员不断向我们的团队咨询有关 EverSQL 的索引推荐算法.所以,我们决定写一些这方面的内容. 本教程不会详细介绍该算法的所有内部特性,而是要简单地说明索引最重要的方 ...

  8. mysql 查询优化 Explain关键字 高性能mysql笔记

    文章目录 性能分析 1.MySQL Query Optimizer 2.MySQL常见瓶颈 3.Explain 3.1 explain是什么 3.2 explain怎么使用 3.3 explain能干 ...

  9. mysql隐式转换造成索引失效的事故总结

    隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给mysql,这样 ...

最新文章

  1. activemq ActiveMQ 两个默认端口 8161和61616的区别
  2. Nginx实现反向代理例子
  3. 一款炫酷Loading动画--载入成功
  4. h3c ospf stub total stub nssa
  5. 用编程解决生活中的问题
  6. 模组厂商对话 MTK:智能音箱市场谈红海还早,下一个爆品将诞生丨WARE 2018
  7. [改善Java代码]边界,边界,还是边界
  8. 100套Java实战项目,附带源码+视频教程,全部免费,打包带走
  9. 两万字《Java完全自学手册》15张导图,送给所有的零基础小白(建议收藏)
  10. 【iOS】快捷指令下载动漫屋漫画
  11. 酷软正在连接服务器,蜗牛星际:我的B款双网口机箱PVE+爱快+LEDE 双软路由 保姆级教程...
  12. 南京工程学院计算机博士,南京工程学院高层次人才引进工作实施办法(修订)...
  13. 笔记:模电-1.3三极管(晶体管)
  14. 计算机系的对联,首个计算机对联系统问世
  15. Hello China操作系统在Virtual PC上的安装和使用
  16. 拉格朗日插值法--python
  17. PMSM学习(3)——基于转子磁场定向和基于定子磁场定向的PMSM矢量控制
  18. 05. windows下使用U盘工具把多个分区合并为一个分区
  19. MySql命令-公司总结
  20. 智慧农业自动打药及水肥一体远程无线自动化控制方案远程开关量继电器电磁阀水泵控制模拟量4-02ma控制压力液位无线采集控制

热门文章

  1. Docker环境下:ImportError: libSM.so.6: cannot open shared object file: No such file or directory
  2. log4j:WARN Please initialize the log4j system properly
  3. 在windows下用VMware虚拟机来安装linux
  4. 通过LDAP验证Active Directory服务
  5. SCA (Service Component Architecture)
  6. jQuery 源码分析笔记(3)
  7. thinkphp htmlspecialchars_decode
  8. Sublime Text 关闭自动更新
  9. 九度oj 题目1537:买卖股票
  10. 12864液晶驱动源码,独创中英文混合输出