1、一个SQL语句执行很慢,如何分析?
可使用“explain”或者“desc”命令获取MySQL如何执行select语句的信息。
语法:直接在select语句前加关键字 explain或desc
explain select job_desc from xxl_job_info where id ='1';
2、执行计划中五个重要的指标
- possible_keys 当前SQL可能会使用到的索引
- key 当前SQL实际命中的索引
- key_len 索引占用的大小
- Extra 额外的优化建议
- type 这条SQL连接的类型,性能由好到差为NULL,system,const,eq_ref,ref,range,index,all
2.1、如何看索引是否命中
通过“key”和“key_len”查看是否可能会命中索引
2.2、“Extra”的含义
Using where/Using Index:查找使用了索引,需要的数据都在索引列中能找到,不需要回表查询数据
Using index condition:查找使用了索引,但是需要回表查询数据
2.3、“type”的含义
- system:查询系统中的表
- const:根据主键查询
- eq_ref:主键索引查询或唯一索引查询
- ref:索引查询
- range:范围查询
- index:索引树查询
- all:全盘扫描
注意:index和all都是很差的,需要优化