MySQL中type字段解析
文章目录1. system const (最快)2. eq_ref (极快)3. ref (快)4. range (较快)5. index (慢)6. ALL (最慢) 核心区别总结记录一下我经常忘记的Type字段在EXPLAIN的结果中type字段代表的是访问类型Access Type即 MySQL 决定如何查找表中的行。这是判断查询性能最直观的指标。按照从好到差的顺序常用的type取值如下1. system const (最快)system表只有一行等于系统表这是const类型的特例。const通过索引一次就找到了。通常出现在使用**主键primary key或唯一索引unique index**与常量进行等值比较时。示例SELECT * FROM users WHERE id 1;2. eq_ref (极快)通常出现在多表连接中连接条件使用的是主键或唯一索引。对于前一张表的每一行在当前表中只有一行匹配。示例SELECT * FROM a JOIN b ON a.id b.a_id;假设b.a_id是唯一索引3. ref (快)使用的是非唯一性索引普通索引或者联合索引的前缀扫描。可能会找到多行符合条件的记录。示例SELECT * FROM users WHERE age 25;age是普通索引4. range (较快)范围扫描。利用索引检索给定范围内的行。特征只要WHERE子句中出现了BETWEEN,,,in,or等且该列有索引通常就是range。5. index (慢)Full Index Scan。虽然也扫了索引但它扫描了索引树的所有叶子节点。这通常比全表扫描快一点点因为它不用去读数据行通常伴随Extra: Using index。6. ALL (最慢)Full Table Scan。全表扫描MySQL 遍历整个表来查找匹配的行。评价数据量大时是灾难必须优化。 核心区别总结system const eq_ref ref range index ALL一般来说生产环境的查询至少要达到range级别最好能达到ref。