本总结来自美团内部分享,屏蔽了内部数据与工具 索引是存储引擎用于快速找到记录的一种数据结构 B-Tree,适用于全键值,键值范围或键最左前缀:(A,B,C): A, AB, ABC,B,C,BC 哪些列建议创建索引:WHERE, JOIN , GROUP BY, ORDER BY等语句使用的列 如何选择索引列的顺序: 经常被使用到的列优先 选择性高的列优先:选择性=distinct(col)/count(col) 宽度小的列优先:宽度 = 列的数据类型 未使用索引 索引不优 服务器配置不佳 死锁 ... mysql -V 客户端版本 select version 服务器版本 type const,system: 最多匹配一个行,使用主键或者unique进行索引 eq_ref: 返回一行数据,通常在联接时出现,使用主键或者unique索引(内表索引连接类型) ref: 使用key的最左前缀,且key不是主键或unique键 range: 索引范围扫描,对索引的扫面开始于某一点,返回匹配的行 index:以索引的顺序进行全表扫描,优点是不用排序,缺点是还要全表扫描 all: 全表扫描 no no no extra using index : 索引覆盖,只用到索引,可以避免访问表 using where: 在存储引擎检索行后再做过滤 using temporary:使用临时表