eq_ref: 对于每个来自于前面的表的行组合,从该表中读取一行,常用在一个索引是unique key或者primary key。 ref: 数据查询的时候如果命中的索引是二级索引不是唯一索引,测试查询速度也会很快,但是type是ref。另外如果是多字段的联合索引,那么根据最左匹配原则,从联合索引的最左侧开始连续多个列的字段进行等值比较也是...
2.9 ref 显示索引的哪一列被使用了,常见的取值有:const, func,null,字段名。当使用常量等值查询,显示const,当关联查询时,会显示相应关联表的关联字段如果查询条件使用了表达式、函数,或者条件列发生内部隐式转换,可能显示为func其他情况null 2.10 rows rows 列表示 MySQL 认为它执行查询时可能需要读取的行...
type是查询的访问类型,是较为重要的一个指标,性能从最好到最坏依次是 system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL。 一般来说,得保证查询至少到达range级别,最好能达到ref。 (1)system 当表仅存在一行记录时(...
EXPLAIN select * from person where name=’alex’; 4.5 ref_or_null该联接类型如同ref类似,结果包含空行. 上面这五种情况都是很理想的索引使用情况 4.6 type=range 索引范围扫描,常见于 ,>=,between,in等操作符。 EXPLAIN select * from person where id BETWEEN 1 and 5; 4.7 type=index 该联接类型与ALL...
ref (JSON名称: ref) ref列显示与key列中命名的索引进行比较以选择表中的行的哪些列或常量。 如果值是func,则使用的值是某个函数的结果。要查看哪个函数,请在EXPLAIN之后使用SHOW WARNINGS查看扩展的EXPLAIN输出。该函数实际上可能是一个运算符,例如一个算术运算符。
在MySQL中,EXPLAIN语句用于分析查询语句的执行计划,包括了查询语句将如何执行、使用了哪些索引、表的访问顺序等信息。其中,EXPLAIN语句的结果中会包含一个ref列,用于显示查询中使用的索引或表的连接条件。 ref列显示了所使用的索引或表的连接条件。当查询时使用了索引列,且查询条件中使用了等于(=)或IN操作符时,ref...
explain基础 对于每个SQL来说,当它被客户端发送到Mysql服务端之后,会经过Mysql的优化器部件的分析,主要包括一些特殊的处理、执行顺序的改变以确保最优的执行效率,最终生成对应的执行计划。所谓的执行计划,实际就是在存储引擎层面如何获取数据的,是通过索引获取数据还是进行全表扫描获取数据,获取到数据后需不需要回表,等等...
ref字段的用法 1、查看查询语句的执行计划: “`sql EXPLAIN SELECT * FROM table_name WHERE column_name = ‘value’; “` 这将返回一个表格,其中包含有关查询语句执行计划的详细信息,包括使用的索引类型(即ref字段)。 2、分析查询性能: 通过观察ref字段的值,我们可以判断查询语句是否使用了合适的索引,以及索引...
| 3 | DEPENDENT UNION | t3 | eq_ref | PRIMARY,idx_t3_id | PRIMARY | 4 | func | 1 | Using where; Using index | |NULL | UNION RESULT | <union2,3> | ALL | NULL | NULL | NULL | NULL | NULL | | +---+---+---+---+---+---+---+---+---+---+ (4).UNION ...
在涉及连接查询时,EXPLAIN输出会显示表之间的引用关系。预估的行数:rows列表示预估需要读取的记录条数,这是优化器基于统计信息进行的预估。其他关键信息:id列:为每个SELECT关键字分配的唯一ID。select_type列:SELECT关键字对应的查询类型。table列:表名。partitions列:匹配的分区信息。ref列:索引列与...