索引慢解决
explain关键字
explain+SQL
-
id执行顺序,id相同从上到下;id不同,如果是子查询id序号会递增,id值越大优先级越高;id相同和不同都存在时,id相同理解为一组,从上往下顺序执行,所有组中,id值越大优先级越高。
-
select_type:SIMPLE为简单的select查询,查询中不包含子查询或者UNION;PRIMARY为包含任何复杂子部分,最外层则被标记为Primary;DERIVED(衍生)是FROM列表中包含的子查询,Mysql会递归这些子查询,结果存放在临时表中;SUBQUERY是select或者where列表中包含子查询
-
table:显示这行数据属于那张表
-
type:访问类型排序system>const>eq_ref>ref>range>index>All。最好保证range级别,最好能到ref
-
system:只有一行记录
-
const:通过索引一次就能找到,primary或者unique索引
-
eq_ref:唯一性索引扫描,对每一个索引键,表中只有一条记录与之对应,常见于主键或唯一索引扫描
-
ref:非唯一索引,普通索引
-
range:只检索给定行比如where id>0
-
index:从索引树中遍历,和all都是读全表,但all是从硬盘读取
-
All:遍历全表
-
-
possible_key:可能应用在这张表中的索引可是多个,不一定用上
-
key:实际使用索引
-
ref:索引那一列被使用
-
rows:执行查询时必须检查的次数
-
extra:常见重要额外信息
- using filesort:无法利用索引完成的排序“文件排序”
- using temporary:使用临时表
- …
索引失效