3、eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于唯一索引或者主键扫描 4、ref:非唯一性索引扫描,返回匹配某个单独值的所有行,本质上也是一种索引访问,它返回所有匹配某个单独值的行,可能会找多个符合条件的行,属于查找和扫描的混合体 5、range:只检索给定范围的行,使用一个索引来选...
对于一条查询sql来说,不同的查询类型虽然结果可能是一样的,但是其性能却可能天差地别。不同类型性能从强到差:system > const > eq_ref > ref > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all。建议大家在平时书写sql时,多用explain进行分析,尝试去优化代码,...
eq_ref 跨表join时,对于驱动表的每一行记录,被动表最多只会读取一行记录。跟单表查询不一样(system,const最快),在跨表查询中,eq_ref是最好的 ref 等值查询,但是可能匹配大于1行记录。比如普通的非唯一索引,或者联合主键和联合唯一索引的左前缀匹配(非全匹配) ref_or_null 与ref类似,但是条件中多了一个IS ...
MySQL就把这种类型的查询定义为了ref。 在上面我们说到,由于唯一索引可能存在多个null,所以用不了const。 那对于 select * from t2 where key2 is null 来说,不管是唯一索引还是普通索引,其最多用到ref这种类型。 5、ref_or_null 应用场景:命中索引时,查询条件除了等值查询,还包含null值查询。 比如:select ...
explain 中的列 expain出来的信息有10列, 分别是id,select_type,table、type,partitions,possible_keys,key,key_len,ref,rows,Extra,下面对这些字段出现的可能进行解释: 一、ID SQL执行的顺序的标识,SQL从大到小的执行 ID相同时,执行顺序由上至下 如果是子查询,ID的序号会递增,ID值越大优先级越高,越先被执行...
mysql 执行计划ref 为null 文章目录 1. Explain执行计划 1.1 id 1.2 select_type 1.3 table 1.4 type 1.5 possible_keys 1.6 key 1.7 key_len 1.8 ref 1.9 rows 1.10 Extra 2. Explain执行计划的局限性 1. Explain执行计划 EXPLAIN是MySQL的一条关键字,用于分析查询语句的执行计划。通过执行EXPLAIN语句,可以...
type: ALL possible_keys: age_idx,status_idx key: NULL key_len: NULL ref: NULL rows: 100 filtered: 10.00 Extra: Using where 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 状态图 下面是一个使用mermaid语法绘制的状态图,展示了解决mysql explain ref为null的过程: ...
Explain命令中的type列,显示MySQL查询所使用的关联类型(Join Types)或者访问类型,它表明MySQL决定如何查找表中符合条件的行。 常见访问类型性能由最差到最优依次为: ALL < index < range <index_subquery< unique_subquery < index_merge < ref_or_null < fulltext < ref < eq_ref < const < system。
1.7 type type是查询的访问类型,是较为重要的一个指标,性能从最好到最坏依次是 system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL。 一般来说,得保证查询至少到达range级别,最好能达到ref。
Explain中的列 id列 这一列总是包含一个编号,标示select所属的行。数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表示这是一个结果集,不需要使用它来进行查询。 select_type列 这一列显示了对应行是简单还是复杂select。