eq_ref 跨表join时,对于驱动表的每一行记录,被动表最多只会读取一行记录。跟单表查询不一样(system,const最快),在跨表查询中,eq_ref是最好的 ref 等值查询,但是可能匹配大于1行记录。比如普通的非唯一索引,或者联合主键和联合唯一索引的左前缀匹配(非全匹配) ref_or_null 与ref类似,但是条件中多了一个IS ...
2 eq_ref,ref,ref_or_null all 多表join 查询 3 index_subquery unique_subquery 子查询 2 index_merge之外,其他的type只可以用到一个索引
当连接使用索引的所有部分且索引是 索引PRIMARY KEY或UNIQUE NOT NULL索引时使用它。 SELECT * FROM ref_table,other_table WHERE ref_table.key_column=other_table.column; SELECT * FROM ref_table,other_table WHERE ref_table.key_column_part1=other_table.column AND ref_table.key_column_part2=1; ref...
mysql> EXPLAIN SELECT COUNT(*) FROM user \G *** 1. row *** id: 1 select_type: SIMPLE table: user partitions: NULL type: index possible_keys: NULL key: idx_birth_year_gender key_len: 5 ref: NULL rows: 22748 filtered: 100.00 Extra: Using index 3. range 范围扫描,就是一个有范围...
不同类型性能从强到差:system > const > eq_ref > ref > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all。建议大家在平时书写sql时,多用explain进行分析,尝试去优化代码,只有不断的实践,才能让自己的sql能力越来越强。#2023我们一起跨年# 我是@程序员拾山,...
不同类型性能从强到差:system > const > eq_ref > ref > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all。 建议大家在平时书写sql时,多用explain进行分析,尝试去优化代码,只有不断的实践,才能让自己的sql能力越来越强。
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列的解释: table:显示这一行的数据是关于哪张表的 type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、index和ALL type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > in...
如果type是const,说明在进行数据查询的时候,命中了primary key或唯一索引,此类数据查询速度非常快。 (3)eq_ref 在进行数据查询的过程中,如果SQL语句中在表连接情况下可以基于聚簇索引或者非null值的唯一索引记性数据扫描,那么此时type对应的值就会显示为eq_ref。 (4)ref 数据查询的时候如果命中的索引是二级索引不是...
Explain中的列 id列 这一列总是包含一个编号,标示select所属的行。数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表示这是一个结果集,不需要使用它来进行查询。 select_type列 这一列显示了对应行是简单还是复杂select。