执行计划详解
执行计划是通过EXPLAIN语句获得的,用于分析和优化查询性能。
- id: 在一个大查询语句中,每个SELECT关键字对应一个唯一的id。
- select_type: SELECT关键字对应的查询类型。
- table: 表名。
- partitions: 匹配的分区信息。
- type: 针对单表的访问方法,从最好到最差依次是
system,const,eq_ref,ref,range,index,ALL。 - possible_keys: 可能用到的索引。
- key: 实际使用的索引。
- key_len: 实际使用到的索引长度。
- ref: 当使用索引列等值查询时,与索引列进行等值匹配的对象信息。
- rows: 预估需要读取的记录条数。
- filtered: 某个表经过搜索条件过滤后剩余记录条数的百分比。
- Extra: 一些额外的信息。
查询优化器
-
查询语句解析与创建解析树
- 查询缓存检查(select语句)。
- 解析查询,创建解析树,进行语法和语义解析。
-
查询优化
- 优化SQL语句,重写查询,决定表的读取顺序,选择需要的索引等。
- 询问存储引擎,获取开销信息,查询优化等。
-
执行查询
- 执行最终的查询计划,获取结果。