持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第13天,点击查看活动详情
详解mysql的执行计划
相信很多用过mysql数据库的朋友们都听说过mysql的一个执行计划,那咱们今天就一起来聊一聊mysql的执行计划具体是如何查看的,这里有到底有什么讲究。 话不多说,咱们马上开始。
首先我们来看看执行这么一句话,mysql究竟会返回关于执行计划的什么样的信息给我们:
explain select * from tb_student;
具体的返回结果,如下图所示:
如果觉得这样不好查看的话,可以在命令后面加\G
现在我们来看看它返回信息中的每个字段,到底表示什么:
- id:这个其实就像是一个优先级的东西,数值越高,越优先执行,数值相同则顺序执行
- select_type:这个主要显示的是普通查询、联合查询还是子查询。
- table:这个字段指明的就是刚刚的操作是针对哪个表执行的。
- type:这个显示的信息就是mysql在查询的时候,采用什么样的查询的问题,有全表扫描、全索引扫描、索引范围查询等等。
- possible_keys:这个字段是显示mysql有可能选用或者采取的索引(但不一定真的选择该索引)
- key:这个显示的就是mysql中真正选择的索引
- key_len:这个是索引的长度,有一些字段很长的,但是素引不一定会是整个字段这么长,有可能是前部分。
- ref:这个显示的是用到了索引中的哪个字段,具体是怎么用的
- rows:这里面显示的是mysql内部可能扫描的行数,但是要十分注意的是这个字段显示的行数并不一定就是实际的行数的,其实它只是一个估计值。
- extra:这个字段平时主要显示的是一些额外信息。