所在的位置: mysql >> mysql发展 >> Mysql索引优化篇

Mysql索引优化篇

1:什么是索引?所以是帮助mysql高效查找数据的数据结构2:什么是Explain?1:解释使用explain关键字可以模拟优化器执行sql查询语句,从而知道Mysql是如何处理你的sql语句,分析你的查询语句或者是表机构的性能瓶颈2:使用方法explain+sql语句3:返回结果含义1:id介绍id相同时,加载顺序由上到下id不同时,如果有子查询,id的序号会递增,id值越大优先级越高,越先被执行id相同不同时(混合),id相同的可以分为一组,顺序由上到下执行,不同的按照id值越大优先级越高,越先被执行2:select_type介绍SIMPLE:简单的select查询,查询中不包含子查询或者UNIONPRIMARY:查询中若包含任何复杂的子部分,最外层查询被标记该类型SUBQUERY:在select或者where列表中包含了子查询DERIVED:在from列表中包含的子查询被标记为DERIVED(衍生),mysql会递归执行这些子查询,把结果放在临时表里面UNION:若第二个select出现在union之后,则被标记为union,若union出现在from子句的子查询中,外层select将被标记为derivedUNIONRESULT:从union表获取结果的select3:table介绍关于执行的哪张表的记录4:type介绍(下面查询类型是从最好到最次依次排序)system:表只有一行表,是const类型的特里,平时不会出现,这个可以忽略不记const:表示通过索引一次找到,const用于比较primarykey或者union索引。因为只匹配一行数据,所以很快,如将主键置于where列表中,mysql就能将该查询转为一个常量eq_ref:唯一性索引扫描,对越每个索引键,每个表中只有一条记录与之匹配。常见于主键或者唯一索引扫描ref:非唯一性索引扫描,返回匹配某个单独值的所有行range:之检索给定范围的行,使用一个索引来选择行index:与ALL的区别是index只遍历索引树ALL:将全表扫描一遍5:possible_key介绍显示可能应用到这张表的索引,一个或者多个。查询涉及到的字段若存在索引,该索引将被列出。(但不一定被查询实际使用)6:key介绍实际使用的索引,如果为null,则没有使用索引。7:key_len介绍表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度。在不损失精确性的情况下,长度越短越好。8:ref介绍表示索引哪一列被使用,如果可能的话,是一个常数。哪些列或者常量被用于查找索引列上的值。9:rows介绍根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数。10:Extra介绍*usingfilesort:使用内部文件排序*usingtemporary:使用临时表*usingindex:使用索引排序(最好能用到)usingwhere:使用where条件usingjoinbuffer:使用了连接缓存impossiblewhere:不合理的where条件selecttablesoptimizedaway:操作已经优化到不能再优化了(MySQL根本没有遍历表或索引就返回数据了)distinct:不使用排序来做分组


转载请注明:http://www.aierlanlan.com/tzrz/6044.html