一郎科技|最完整的Explain总结,妈妈再也不担心我的SQL优化了( 二 )
table列这一列表示 explain 的一行正在访问哪个表 。当 from 子句中有子查询时 , table列是 格式 , 表示当前查询依赖 id=N 的查询 , 于是先执行 id=N 的查询 。当有 union 时 , UNION RESULT 的 table 列的值为
type列这一列表示关联类型或访问类型 , 即MySQL决定如何查找表中的行 , 查找数据行记录的大概范围 。依次从最优到最差分别为:system > const > eq_ref > ref > range > index > ALL 一般来说 , 得保证查询达到range级别 , 最好达到ref
NULL
mysql能够在优化阶段分解查询语句 , 在执行阶段用不着再访问表或索引 。 例如:在索引列中选取最小值 , 可以单独查找索引来完成 , 不需要在执行时访问表
mysql> explain select min(id) from film;const, system
mysql能对查询的某部分进行优化并将其转化成一个常量(可以看show warnings 的结果) 。 用于 primary key 或 unique key 的所有列与常数比较时 , 所以表最多有一个匹配行 , 读取1次 , 速度比较快 。 system是const的特例 , 表里只有一条元组匹配时为system
mysql> explain extended select * from (select * from film where id = 1) tmp;eq_ref
primary key 或 unique key 索引的所有部分被连接使用, 最多只会返回一条符合条件的记录 。 这可能是在 const 之外最好的联接类型了 , 简单的 select 查询不会出现这种 type 。
mysql> explain select * from film_actor left join film on film_actor.film_id = film.id;ref
相比 eq_ref , 不使用唯一索引 , 而是使用普通索引或者唯一性索引的部分前缀 , 索引要和某个值相比较 , 可能会找到多个符合条件的行 。
mysql> explain select * from film where name = "film1";2.关联表查询 , idx_film_actor_id是film_id和actor_id的联合索引 , 这里使用到了film_actor的左边前缀film_id部分 。
mysql> explain select film_id from film left join film_actor on film.id = film_actor.film_id;range
范围扫描通常出现在 in(), between ,> ,<, >= 等操作中 。 使用一个索引来检索给定范围的行 。
mysql> explain select * from actor where id > 1;index
扫描全表索引 , 这通常比ALL快一些 。 (index是从索引中读取的 , 而all是从硬盘中读取)
mysql> explain select * from film;ALL
即全表扫描 , 意味着mysql需要从头到尾去查找所需要的行 。 通常情况下这需要增加索引来进行优化了
mysql> explain select * from actor;possible_keys列这一列显示查询可能使用哪些索引来查找 。explain 时可能出现 possible_keys 有列 , 而 key 显示 NULL 的情况 , 这种情况是因为表中数据不多 , mysql认为索引对此查询帮助不大 , 选择了全表查询 。如果该列是NULL , 则没有相关的索引 。 在这种情况下 , 可以通过检查 where 子句看是否可以创造一个适当的索引来提高查询性能 , 然后用 explain 查看效果 。
推荐阅读
- 所持股份|万兴科技:公司控股股东、实际控制人吴太兵质押150万股
- 发布公告|数量过半!博创科技:天通股份累计减持约150万股
- 英雄科技聊数码|蔡崇信有实力买下篮网,那身价3200亿的马云,能买下几支NBA球队
- 科技前沿阵地|涨疯了!海思安防芯片遭哄抬“围剿”
- 月影浓|吴亦凡机械造型走秀 垫肩披风搭银框眼镜科技感足
- 中国历史发展过程|中国历史发展过程.中国的科技史界过去半个多世纪
- 天津|桂发祥:不再持有昆汀科技股份
- 消费|减持!天通股份:减持博创科技约32万股
- 处罚|老周侃股:吉鑫科技大股东应补偿踩雷投资者
- 华中科技大学|杯具!超本科线95分,本科有路不走,却梦幻般碰瓷,撞开专科的门
