如何发现并改善mySQL语句性能问题?
查找性能不佳的 SQL 语句最重要、最有效的方法是使用执行计划。我们知道,无论什么类型的数据库或数据库引擎,在SQL语句的执行过程中都会进行很多相关的优化。对于查询语句来说,最重要的优化方法就是使用索引。执行计划显示了数据库引擎输出SQL语句的详细信息,包括使用的索引、要使用的索引以及与使用的索引相关的信息。
执行计划id中包含的信息包含多个数字。指定查询中每个子查询的执行顺序;
- id 从上到下执行顺序相同。
- ID 不同。 ID值越大,优先级越高,首先执行。
- 当id为空时,代表一组结果。没有必要将其用于提问。常出现在疑问句等中。
select_type 每个子查询的查询类型,默认查询类型。
id | select_type | description |
---|---|---|
1 | SIMPLE | 不包含子查询或联合查询 |
2 | PRIMARYPRIMARY AND | |
3 | SUBQUERY | 选择中包含的问题或在哪里子句 |
4 | DARIVA | 子句 |
5 | UNION | 中包含的查询出现在联合 |
6 | UNION RESULTb to FROM b table请求之后的查询语句中上面第三个例子中的数据库表。从派生表查询数据时,会显示一个x,表示对应的执行计划id partition 表 创建分区和表时,可以指定用哪些列来分隔表。示例:
类型(非常重要,可以检查是否有索引) 访问类型
possible_keys 可以使用的索引,请注意它们可能不会使用。如果查询涉及的字段有引用,则会列出该引用。当该列为NULL时,需要考虑当前的SQL是否需要调整。 key 表示MySQL在查询时使用的索引。如果没有使用索引,则显示为NULL。 TIP:如果查询中使用了覆盖索引(覆盖索引:索引覆盖了所有需要查询的数据),则该索引只会出现在key列表中。 key_length | |
4 | 索引长度 ref 表示上表中的匹配条件,即用于查找参考列中的值的列或常量 rows 返回估计的集合数,即不是一个确切的值。 额外信息非常丰富,常见的有:
作者:codeyuyu |
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。