8.8.1 Optimizing Queries with EXPLAIN

8.8 Understanding the Query Execution Plan
[+/-]

8.8.1 Optimizing Queries with EXPLAIN
8.8.2 EXPLAIN Output Format
8.8.3 EXPLAIN EXTENDED Output Format
8.8.4 Estimating Query Performance

根据你表的信息,列,索引,你的where 条件,MySQL 优化器考虑很多的技术来有效的查找执行一个查询。

一个查询在一个大表上可以被执行不需要读取所有的表,一个关联调用几个表能被执行不比较每一个组合的行。

优化选择来执行更高效的查询被叫做查询执行计划, 也被称为 EXPLAIN plan.你的目的是识别

EXPLAIN 计划的部分,表明查询是否是最优的,学习SQL 符号和索引技术来实现计划,如果你看到一些低效的操作。

8.8.1 Optimizing Queries with EXPLAIN 优化查询使用执行计划

在MySQL 5.6.3,允许解释语句用于EXPLAIN 是SELECT,DELETE,INERT REPLACE和UPDATE.

在MySQL 5.6.3前, SELECT 是唯一的解释语句:

当EXPLAIN 是用于一个解释语句,MySQL 从优化器显示信息关于语句的执行计划。

那是,MySQL explain 它如何处理语句,包括信息关于表如何关联,和什么关联顺序。

使用EXPLAIN 得到的执行计划信息:

EXPLAIN EXTENDED 可以用于得到额外的执行计划信息

EXPLAIN PARTITIONS 是用于检查查询涉及的分区表。

在MySQL 5.6.3,FORMAT 选项被用于查看格式输出, 传统的是以表格格式输出。

如果没有格式选项,这是默认的。 JSON格式显示的信息。

在EXPLAIN 的帮助下,你可以看到哪里你应该给表加索引,以便让语句执行的更快

通过使用索引来找到行。你也可以使用EXPLAIN 来检查是否优化器 关联表使用正确的顺序,

指定hint 来优化使用关联顺序相关的, 用SELECT STRAIGHT_JOIN JOIN 相比直接SELECT。

如果你有一个索引的问题不被使用,但是你认为应该走,运行ANALYZE TABLE 来更新统计信息, 比如keys(索引)的基数,

原文地址:https://www.cnblogs.com/hzcya1995/p/13351412.html