标签:bash primary class 优化器 导出 帮助 引用 结果 系统表
MySQL为我们提供了 explain 关键字来直观的查看一条SQL的执行计划。
explain显示了MySQL如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句。
下面我们使用 explain 做一个查询,如下:
mysql> explain select * from payment;
+----+-------------+---------+------------+------+---------------+------+---------+------+-------+----------+-------+
| id | select_type | table   | partitions | type | possible_keys | key  | key_len | ref  | rows  | filtered | Extra |
+----+-------------+---------+------------+------+---------------+------+---------+------+-------+----------+-------+
|  1 | SIMPLE      | payment | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 16086 |   100.00 | NULL  |
+----+-------------+---------+------------+------+---------------+------+---------+------+-------+----------+-------+
1 row in set, 1 warning (0.01 sec)
查询结构中有12列,理解每一列的含义,对理解执行计划至关重要,下面用一个表格的形式进行说明。
| 列名 | 说明 | 
|---|---|
| id | SELECT识别符,这是SELECT的查询序列号。 | 
| select_type | 
 SELECT类型,可以为以下任何一种: 
  | 
| table | 输出的行所引用的表 | 
| partitions | 如果查询是基于分区表的话,显示查询将访问的分区。 | 
| type | 
 联接类型。下面给出各种联接类型,按照从最佳类型到最坏类型进行排序: 
 一般来说,得保证查询至少达到range级别,最好能达到ref。  | 
| possible_keys | 指出MySQL能使用哪个索引在该表中找到行 | 
| key | 显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。 | 
| key_len | 显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。在不损失精确性的情况下,长度越短越好 | 
| ref | 显示使用哪个列或常数与key一起从表中选择行。 | 
| rows | 显示MySQL认为它执行查询时必须检查的行数。多行之间的数据相乘可以估算要处理的行数。 | 
| filtered | 显示了通过条件过滤出的行数的百分比估计值。 | 
| Extra | 
 该列包含MySQL解决查询的详细信息 
  | 
根据上述表格,可以在执行计划分析上提供很好的帮助。
标签:bash primary class 优化器 导出 帮助 引用 结果 系统表
原文地址:https://www.cnblogs.com/xiufengchen/p/10407575.html