mysql看懂执行计划之用explain优化查询

EXPLAIN 语句提供了关于MySQL执行语句的信息:

  • EXPLAIN 适用于 SELECT, DELETE, INSERT, REPLACE, 以及 UPDATE 语句。

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

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

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

  • EXPLAIN对于检查涉及分区表的查询时同样可用。请参见第23.3.5节“获取有关分区的信息”。

  • FORMAT选项可用于选择输出格式。 TRADITIONAL以表格格式显示输出, 如果不存在FORMAT选项,它这是默认值。 JSON格式则以JSON格式显示信息。

有了 EXPLAIN的帮助,你可以看到哪些表可以添加索引,以便通过索引查找行使得语句执行的更快。你还可以使用EXPLAIN来检查优化器是否以最佳顺序连接表。要提示优化器使用与SELECT语句中表的命名顺序相对应的联接顺序,请以SELECT STRAIGHT join而不只使用是SELECT。然而,STRAIGHT_JOIN 可能用不到索引,以为它金枝了半联接转换。请看MySQL内部机制:跟踪优化器。

如果你认为索引应该被使用而没有使用索引,请运行ANALYZE TABLE以更新可能影响优化程序所做选择的表统计信息,例如键的基数。请看第13.7.3.1节。

注意
EXPLAIN 也可以用于获取表的字段信息。 EXPLAIN *tbl_name* i等同于 DESCRIBE *tbl_name*SHOW COLUMNS FROM *tbl_name*。更多,请看第13.8.1节, “DESCRIBE语法”, 和 第13.7.6.5节, “SHOW COLUMNS 语法”.

原文地址

你可能感兴趣的:(mysql看懂执行计划之用explain优化查询)