mysql 查询执行计划_mysql8 参考手册--了解查询执行计划,使用EXPLAIN优化查询
根据表,列,索引的详细信息以及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优化查询相关推荐
- mysql 分区个数限制_mysql8 参考手册-分区的限制
本节讨论了对MySQL分区支持的当前限制. 禁止使用的构造. 分区表达式中不允许以下构造: 存储过程,存储函数,UDF或插件. 声明的变量或用户变量. 有关分区表达式中允许的SQL函数的列表,请参见 ...
- mysql的Event权限_mysql8 参考手册-事件调度程序和MySQL特权
要启用或禁用调度事件的执行,必须设置全局 event_scheduler系统变量的值.这需要足以设置全局系统变量的特权. 该EVENT特权控制事件的创建,修改和删除.可以使用授予该特权GRANT.例如 ...
- mysql 表空间修改_mysql8 参考手册--调整系统表空间
系统表空间是更改缓冲区的存储区.如果在系统表空间中创建表,而不是在每个表文件或常规表空间中创建表,则它也可能包含表和索引数据.在以前的MySQL版本中,系统表空间包含InnoDB数据字典.在MySQL ...
- mysql hash分区 数目_mysql8 参考手册-HASH分区
分区依据HASH主要用于确保在预定数量的分区之间均匀分布数据.使用范围或列表分区时,必须明确指定应将给定列值或一组列值存储在哪个分区中:对于散列分区,此决定将由您来决定,您只需要根据要散列的列值以及要 ...
- mysql routines是什么_mysql8 参考手册-INFORMATION_SCHEMA ROUTINES表
ROUTINES表提供有关存储例程(存储过程和存储函数)的信息.该ROUTINES表不包括内置SQL函数或用户定义函数(UDF). 该ROUTINES表包含以下列: SPECIFIC_NAME 例程的 ...
- mysql数据类型及语法_mysql8 参考手册--Numeric数据类型语法
MySQL支持所有标准的SQL数值数据类型.这些类型包括精确数字数据类型(整数.SMALLINT.DECIMAL和numeric)以及近似数字数据类型(FLOAT.REAL和DOUBLE PRECIS ...
- mysql通过订单量排序_mysql8 参考手册--通过排序优化
本节描述了MySQL何时可以使用索引满足ORDER BY子句,无法使用索引时使用的 filesort操作,以及有关优化程序的执行计划信息ORDER BY. 一个ORDER BY有和没有 LIMIT可能 ...
- mysql 事件计划区别_mysql8 参考手册-事件计划程序状态
事件调度程序将有关事件执行的信息(以错误或警告结尾)写入MySQL Server的错误日志. 要获取有关事件计划程序状态的信息以进行调试和故障排除,请运行mysqladmin debug(请参见第4. ...
- mysql 8 多线程_mysql8 参考手册--通用线程状态
下表描述了State 与常规查询处理而非更专门的活动(如复制)相关联的线程值.其中许多仅用于发现服务器中的错误. After create 当线程在创建表的函数的末尾创建表(包括内部临时表)时,会发生 ...
最新文章
- Android批量图片载入经典系列——afinal框架实现图片的异步缓存载入
- ubuntu编译内核重启出现:gave up waiting for root device
- SAP MM 评估类型 评估类别
- Linux网络状态工具ss命令操作详解
- MySQL分库分表 mycat
- 韩师师范学院计算机科学与技术在哪个学区,2017年韩山师范学院本科插班生考试《数据结构》A卷...
- React Native 一些事
- SPOJ LIS2 Another Longest Increasing Subsequence Problem 三维偏序最长链 CDQ分治
- python学习笔记爬虫——爬取网络表情包
- Maxwell 介绍、安装、部署、运行(MYSQL -> Maxwell -> kafka)
- DaSiamRPN、SiamRPN++论文阅读
- 《带您走进西藏》网课章节测验及答案
- matlab 多个向量的余弦角_matlab中怎么求一个行向量的反余弦值
- 题解:2018校招真题(字节跳动:附加题)
- 三维空间几何变换矩阵
- OpenCV图像处理---模糊原理
- dbpedia知识图谱java_中文通用百科知识图谱(CN-DBpedia)
- 【转】获取用户移动方向,指南针原理
- vs:dll缺少依赖文件的解决方法
- 乐观锁与悲观锁、自旋锁