MySQL索引及执行计划

时间:2020-02-05 23:21:45   收藏:0   阅读:84

MySQL索引及执行计划

索引

合理的建立索引可以加快数据查询,例如,学校图书管为每一本书编号,根据编号可以快速锁定一本书所在位置。MySQL索引默认B+树索引。索引虽然能够提高检索效率,但同时也会降低更新的速度,因为insert 、update、delete也会操作索引文件,会调整因为更新等操作带来的键值变化后的索引信息。

索引类型

何时建立索引

不需要索引

执行计划

可以使用explain 关键字模拟优化器执行sql查询语句,从而分析查询语句或者表结构的性能瓶颈。

通过查看执行计划,可以了解到表的读取顺序、数据读取操作、哪些索引可以使用、哪些索引被实际使用、表之间的引用、每张表中有多少行被优化器查询

explain select * from tz_order a left join tz_order_item b on b.order_number = a.order_number where b.order_number = 1146347329394184192
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE b ALL order_number 7 14.29 Using where
1 SIMPLE a eq_ref order_number_unique_ind order_number_unique_ind 152 yami_shops.b.order_number 1 100

id

表示实际操作中加载表的顺序,可以相同也可以不相同,如果id相同则从上往下依次加载执行,不相同则id越大对应的表越先加载。

select_type

type

possible_key

可能应用到这张表的索引,查询涉及到的字段上若存在索引,则列出,但是不一定会使用。

key

实际使用到的索引,如果是null,则没有使用索引,如果查询中使用了覆盖索引,则该索引仅会出现在key列表中

key_len

表示索引中使用的字节数,计算查询中索引的长度,在不损失精度的情况下,越小越好,这个值显示的是索引字段的最大可能长度,不是实际长度

ref

显示索引的哪一列被使用

rows

根据表统计信息以及索引选用情况,大致估算找到所需记录需要扫描的行数

extra

表驱动

原文:https://www.cnblogs.com/QullLee/p/12266967.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!