根据表,列,索引的详细信息以及WHERE子句中的条件,MySQL优化器考虑了许多技术来有效执行SQL查询中涉及的查找。无需读取所有行即可执行对巨大表的查询;可以执行涉及多个表的联接,而无需比较行的每个组合。优化器选择执行最有效查询的一组操作称为“ 查询执行计划 ”,也称为 EXPLAIN计划。您的目标是认识到 EXPLAIN 表示查询优化的计划,如果发现一些低效的操作,则可以学习SQL语法和索引技术来改进计划。

使用EXPLAIN优化查询

EXPLAIN语句提供有关MySQL如何执行语句的信息:

1、EXPLAIN作品有 SELECT, DELETE, INSERT, REPLACE,和 UPDATE语句。

2、当EXPLAIN与可解释的语句一起使用时,MySQL将显示来自优化器的有关语句执行计划的信息。也就是说,MySQL解释了它将如何处理该语句,包括有关如何连接表以及以何种顺序连接表的信息。有关 EXPLAIN用于获取执行计划信息的信息,请参见第8.8.2节“ EXPLAIN输出格式”。

3、当EXPLAIN与 而不是可解释的语句一起使用时,它将显示在命名连接中执行的语句的执行计划。请参见第8.8.4节“获取命名连接的执行计划信息”。 FOR CONNECTION connection_id

4、对于SELECT语句, EXPLAIN产生可以使用来显示的其他执行计划信息 SHOW WARNINGS。请参见 第8.8.3节“扩展的EXPLAIN输出格式”。

5、EXPLAIN对于检查涉及分区表的查询很有用。请参见 第23.3.5节“获取有关分区的信息”。

6、FORMAT选项可用于选择输出格式。TRADITIONAL以表格格式显示输出。如果不FORMAT存在任何选项,则为默认设置 。 JSONformat以JSON格式显示信息。

在EXPLAIN的帮助下,您可以看到应该在表中添加索引的位置,以便通过使用索引查找行来使语句更快地执行。您还可以 EXPLAIN用来检查优化器是否以最佳顺序联接表。要提示优化器使用连接顺序,该连接顺序与SELECT语句中表的命名顺序相对应,请以 SELECT STRAIGHT_JOIN而不是just 开头SELECT。(请参见 第13.2.10节“ SELECT语句”。)但是,STRAIGHT_JOIN由于它禁用了半联接转换,因此 可能会阻止使用索引。看到 第8.2.2.1节“使用半联接转换优化IN和EXISTS子查询谓词”。

优化程序跟踪有时可能提供与补充的信息EXPLAIN。但是,优化程序的跟踪格式和内容在版本之间可能会发生变化。有关详细信息,请参见 MySQL内部:跟踪优化器。

如果您在认为应该使用索引时遇到问题,请运行ANALYZE TABLE以更新表统计信息,例如键的基数,这可能会影响优化器的选择。请参见 第13.7.3.1节“ ANALYZE TABLE语句”。

注意

EXPLAIN还可用于获取有关表中列的信息。EXPLAIN tbl_name与DESCRIBE tbl_name同义,并显示来自tbl_name的列。

mysql 查询执行计划_mysql8 参考手册--了解查询执行计划,使用EXPLAIN优化查询相关推荐

  1. mysql 分区个数限制_mysql8 参考手册-分区的限制

    本节讨论了对MySQL分区支持的当前限制. 禁止使用的构造. 分区表达式中不允许以下构造: 存储过程,存储函数,UDF或插件. 声明的变量或用户变量. 有关分区表达式中允许的SQL函数的列表,请参见 ...

  2. mysql的Event权限_mysql8 参考手册-事件调度程序和MySQL特权

    要启用或禁用调度事件的执行,必须设置全局 event_scheduler系统变量的值.这需要足以设置全局系统变量的特权. 该EVENT特权控制事件的创建,修改和删除.可以使用授予该特权GRANT.例如 ...

  3. mysql 表空间修改_mysql8 参考手册--调整系统表空间

    系统表空间是更改缓冲区的存储区.如果在系统表空间中创建表,而不是在每个表文件或常规表空间中创建表,则它也可能包含表和索引数据.在以前的MySQL版本中,系统表空间包含InnoDB数据字典.在MySQL ...

  4. mysql hash分区 数目_mysql8 参考手册-HASH分区

    分区依据HASH主要用于确保在预定数量的分区之间均匀分布数据.使用范围或列表分区时,必须明确指定应将给定列值或一组列值存储在哪个分区中:对于散列分区,此决定将由您来决定,您只需要根据要散列的列值以及要 ...

  5. mysql routines是什么_mysql8 参考手册-INFORMATION_SCHEMA ROUTINES表

    ROUTINES表提供有关存储例程(存储过程和存储函数)的信息.该ROUTINES表不包括内置SQL函数或用户定义函数(UDF). 该ROUTINES表包含以下列: SPECIFIC_NAME 例程的 ...

  6. mysql数据类型及语法_mysql8 参考手册--Numeric数据类型语法

    MySQL支持所有标准的SQL数值数据类型.这些类型包括精确数字数据类型(整数.SMALLINT.DECIMAL和numeric)以及近似数字数据类型(FLOAT.REAL和DOUBLE PRECIS ...

  7. mysql通过订单量排序_mysql8 参考手册--通过排序优化

    本节描述了MySQL何时可以使用索引满足ORDER BY子句,无法使用索引时使用的 filesort操作,以及有关优化程序的执行计划信息ORDER BY. 一个ORDER BY有和没有 LIMIT可能 ...

  8. mysql 事件计划区别_mysql8 参考手册-事件计划程序状态

    事件调度程序将有关事件执行的信息(以错误或警告结尾)写入MySQL Server的错误日志. 要获取有关事件计划程序状态的信息以进行调试和故障排除,请运行mysqladmin debug(请参见第4. ...

  9. mysql 8 多线程_mysql8 参考手册--通用线程状态

    下表描述了State 与常规查询处理而非更专门的活动(如复制)相关联的线程值.其中许多仅用于发现服务器中的错误. After create 当线程在创建表的函数的末尾创建表(包括内部临时表)时,会发生 ...

最新文章

  1. Android批量图片载入经典系列——afinal框架实现图片的异步缓存载入
  2. ubuntu编译内核重启出现:gave up waiting for root device
  3. SAP MM 评估类型 评估类别
  4. Linux网络状态工具ss命令操作详解
  5. MySQL分库分表 mycat
  6. 韩师师范学院计算机科学与技术在哪个学区,2017年韩山师范学院本科插班生考试《数据结构》A卷...
  7. React Native 一些事
  8. SPOJ LIS2 Another Longest Increasing Subsequence Problem 三维偏序最长链 CDQ分治
  9. python学习笔记爬虫——爬取网络表情包
  10. Maxwell 介绍、安装、部署、运行(MYSQL -> Maxwell -> kafka)
  11. DaSiamRPN、SiamRPN++论文阅读
  12. 《带您走进西藏》网课章节测验及答案
  13. matlab 多个向量的余弦角_matlab中怎么求一个行向量的反余弦值
  14. 题解:2018校招真题(字节跳动:附加题)
  15. 三维空间几何变换矩阵
  16. OpenCV图像处理---模糊原理
  17. dbpedia知识图谱java_中文通用百科知识图谱(CN-DBpedia)
  18. 【转】获取用户移动方向,指南针原理
  19. vs:dll缺少依赖文件的解决方法
  20. 乐观锁与悲观锁、自旋锁

热门文章

  1. yum安装mysql
  2. 第六十六篇、OC_Sqlite数据库操作
  3. 01.The Introduction of Linux
  4. Spark集群基于Zookeeper的HA搭建部署笔记(转)
  5. python文件IO操作
  6. python 为空判断场景
  7. SAS 对数据的拼接与串接
  8. [Swift通天遁地]七、数据与安全-(19)使用Swift实现原生的SHA1加密
  9. MongoDB3.6.3 windows安装配置、启动
  10. 操作系统 chapter 12 死锁