Sql语句执行速度慢
原因
聚合查询
多表查询
表数据量过大查询
深度分页查询
分析
sql的执行计划
可以使用EXPLAIN或者DESC获取Mysql如何执行SELECT语句的信息
直接在select语句前加关键字explain/desc
得到一个执行信息表
信息字段分析
possible_keys:可能使用到的索引
可以查看是否可能命中索引
key:当前sql实际命中的索引
key_len:索引占用的大小
Extra:额外的优化建议:
using where,using index查找使用索引且数据都能在索引列中找到,不需要回表查询数据
using index condition查找使用索引但需要回表查询数据
type:sql连接的类型
性能由好到差依次为NULL,System,const,eq_ref,ref,range,index,all
NULL:没有使用表
system:使用mysql自带表
const:根据主键索引查询
eq_ref:主键索引查询或唯一索引查询
ref:索引查询
range:范围查询
index:索引树查询
all:全盘扫描