explain使用
随着业务逻辑的复杂化和数据量的扩展,慢sql的问题就会出现,此时需要通过查看执行计划来对一些慢sql进行优化,下文是对explain的各个参数的解读。
参数解读
在sql语句前面加上explain关键字,即可查看执行计划。如:
explain select instrument_id from quote_kline_1day where instrument_id= 'cu1802'
以下为各个参数字段名:
+—-+————-+——-+——-+——————-+———+———+——-+——+——-+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+—-+————-+——-+——-+——————-+———+———+——-+——+——-+
1,id :select查询的序列号
2,select_type:select查询的类型,主要是区别普通查询和联合查询、子查询之类的复杂查询。
有以下这几个value:
a.SIMPLE:查询中不包含子查询或者UNION
b.查询中若包含任何复杂的子部分,最外层查询则被标记为:PRIMARY
c.在SELECT或WHERE列表中包含了子查询,该子查询被标记为:SUBQUERY
d.在FROM列表中包含的子查询被标记为:DERIVED(衍生)
e.若第二个SELECT出现在UNION之后,则被标记为UNION;若UNION包含在 FROM子句的子查询中,外层SELECT将被标记为:DERIVED
f.从UNION表获取结果的SELECT被标记为:UNION RESULT
3,table :输出的行所引用的表。
4,type :联合查询所使用的类型,表示MySQL在表中找到所需行的方式,又称“访问类型”。
有以下value:
ALL: 全表