mysql解释执行计划
如:解释选择*从test1
解释栏的解释:
表:它显示了这一行的数据表。
类型:这是一个重要的栏目,显示什么类型的连接使用。最糟糕的连接类型是const,eq_reg,参考范围,indexhe,和所有
possible_keys:显示指数可能应用于此表。如果它是空的,没有什么可能的指标。你可以选择从哪里声明相关领域适当的声明
关键:该指标的实际使用。如果无效,该指数是没有用的。在一些情况下,MySQL会选择优化索引索引。在这种情况下,使用索引(indexname)可以用于SELECT语句强制索引或忽略指数(indexname)强迫MySQL忽略指数。
key_len:使用的索引的长度。在不损失精度的情况下,越短越好
索引:显示索引的哪一列,如果可能的话,是常量
行:MySQL认为必须检查的行数返回请求数据。
另外:关于MySQL分析查询的更多信息,可以在表4.3中讨论,但坏的例子,我们可以看到这里使用的是临时用filesort,意义MySQL不能使用在所有的指标,结果是缓慢的检索。
附加列返回的说明的含义。
明显:一旦MySQL找到一行与该行相匹配,它就不再搜索了。
不存在:MySQL优化左连接,一旦找到与左连接标准相匹配的行,它就不再搜索了。
范围检查每个记录(指数图:#):没有找到理想的指标。因此,对于前面表中的每一行组合,使用哪个索引检查MySQL并使用它返回表中的行,这是使用索引最慢的连接之一。
当使用filesort:见此,查询需要optimized.mysql需要采取额外的步骤来找出如何返回的行进行排序,排序的所有行根据连接类型和所有行行指针排序键值和匹配条件的商店。
使用索引数据:从仅使用索引信息的表中返回列数据,而不读取实际操作。当表的所有请求列都是同一索引的一部分时,就会出现这种情况。
当使用临时查看时,查询需要优化。在这里,MySQL需要创建一个临时表来存储结果,通常是按不同的列顺序排列,而不是按组进行。
所使用的WHERE子句使用WHERE子句来限制哪些行与下表匹配或返回给用户。如果不希望返回表中的所有行,而连接类型是全部或索引,则会发生这种情况,或者这将是对具有不同连接类型的查询的解释。
系统表只有一行:系统表。这是常量连接类型的特殊情况。
表中记录的最大值可以匹配查询(索引可以是主索引或唯一索引)。因为只有一行,所以值实际上是一个常数,因为MySQL首先读取值,并将其作为常量。
当eq_ref:是连接,当MySQL查询,它记录了一个记录从表从上表中的每个记录的联盟。当索引用作主键或只有一个键时,它使用所有索引。
参考:此连接类型只发生在查询中使用键不唯一或主键,或这些类型的零件,如最左前缀。每行前面的桌子,所有的记录将从表中读取出来的。这类严重依赖的记录,比赛按指数-越少越好的数量
范围:连接类型使用索引返回范围内的一行,例如使用>或<查找某物的情况。
索引:这种连接对前一个表中的每个记录进行了完整的扫描(比所有的记录都要好,因为索引通常小于表数据)。
全部的连接类型:对以前记录的每一条都进行了完全扫描,这通常是不好的,应该尽量避免。