1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > mysql 优化器_mysql之优化器 执行计划 简单优化

mysql 优化器_mysql之优化器 执行计划 简单优化

时间:2024-02-18 11:45:00

相关推荐

mysql 优化器_mysql之优化器 执行计划 简单优化

mysql> explain select * from employees.employees limit 1\G;

*************************** 1. row ***************************

id: 1

select_type: SIMPLE 查询类型

table: employees 当前查询被扫描到的表 可能是表的别名

partitions: NULL

type: ALL 表扫描方式

possible_keys: NULL 可能被使用到的索引

key: NULL 被使用的索引

key_len: NULL 使用过的索引的长度

ref: NULL

rows: 299246 扫描的数据的行数(examin)

filtered: 100.00 (返回比例)

Extra: NULL 额外的说明

id列:一般情况下如果不带子查询,id不增加.如果有子查询的,自查询数字增加,先执行子查询,即数据大的先执行.(从大到小).

select_type列:simple简单查询(不带子查询) PRIMARY子查询最外层查询

SUBQUERY(不在from后面子查询) DEPENDENT SUBQUERY

DERIVED(在from子句中的子查询) union:在union关键字的后的select语句

union result:采用匿名临时进行检索结果

table列:这列表示正在访问某个表

type:查询类型:查询效率依次下降. (system---const---eq_ref---ref---fulltext---ref_of_null----index_merge---unique_subquery---index_subquery---range---index----all)

ALL ----全表扫描index----按照索引的次序进行全表扫描range-----索引范围扫描

ref-----索引直接获取单个数据const----- -通过主键直接返回数据

执行计划列:

id列:用于表示select的列,如果都是简单查询则都是1,如果有子查询,则会进行增加,数据大的先执行。

查看执行计划的规则:(最大最上规则)

1.id相同,执行顺序由上至下

2.id不同,如果是子查询,id序号会递增,id值越大优先级越高,越先被执行。

3.id既有相同的,又有不同的。id如果相同认为是一组,执行顺序由上至下; 在所有组中,id值越大优先级越高,越先执行。

possible_keys列:可能会使用那些索引

key列:使用到的索引

Key_len列:索引长度列.可根据索引的使用长度来判断复合索引的使用情况.

Ref列:索引中查找到的值所用的列或者常量

rows列:MySQL需要扫描的行数

table列:这列表示正在访问某个表.

Select type列的值有:

1.PRIMARY:查询中包含任何复杂的子部分,最外层的查询

2.SUBQUERY:SELECT或WHERE中包含的子查询部分(不是from后的子查询).

3.DERIVED:在FROM中包含的子查询被标记为DERIVER(衍生), MySQL会递归执行这些子查询,把结果放到临时表中。

4.UNION:若第二个SELECT出现UNION,则被标记为UNION, 若UNION包含在FROM子句的子查询中,外层子查询将被标记为DERIVED。

5.UNION RESULT:从UNION表获取结果的SELECT

6.simple:简单查询,不包括子查询和union.

type列:查询类型:(12种)

system---const---eq_ref---ref---fulltext---ref_of_null----index_merge---unique_subquery---index_subquery---range---index----all

说明:按照此顺序查询效率依次下降。 (subquery:子查询)

Extra列的值:

1.using filesort需要使用额外的排序得到结果(进行内存排序或者硬盘排序)

2.using index优化器只需要使用索引就可以返回结果(覆盖索引)

3.using index condition优化器使用index condition pushdown优化

4.using join buffer优化器需要在使用join buffer

5.using mrr优化器使用mrr优化

6.using tpporary优化器需要使用临时表

7.using where优化器使用where过滤

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。