对于一条查询sql来说,不同的查询类型虽然结果可能是一样的,但是其性能却可能天差地别。不同类型性能从强到差:system > const > eq_ref > ref > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all。建议大家在平时书写sql时,多用explain进行分析,尝试去优化代码,...
key 显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。查询中如果使用覆盖索引,则该索引和查询的select字段重叠。 key_len 表示索引中使用的字节数,该列计算查询中使用的索引的长度在不损失精度的情况下,长度越短越好。如果键是NULL,则长度为NULL。该字段显示为索引字段的最大可能长度,并非实际使用长度。
mysql> explain select b.*, a.* from payment a ,customer b where a.customer_id = b.customer_id\G *** 1. row *** id: 1 select_type: SIMPLE table: b type: ALL possible_keys: PRIMARY key: NULL key_len: NULL ref: NULL rows: 541 Extra: *** 2. row *** id: 1 select_type...
mysql> explain extended select * from film where rating > 9\G *** 1. row *** id: 1 select_type: SIMPLE table: film type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 1024 filtered: 100.00 Extra: Using where 1 row in set, 1 warning (0.00 sec) type = ind...
2、explain每列信息 2.1 id id表示sql语句的执行顺序,id相等时,按照顺序执行,当id不同时,id越大,sql越先执行 2.2select_type (1)SIMPLE:简单查询 查询不包含子查询和union。 (2)PRIMARY:复制的查询中最外层的select查询 (3)SUBQUERY: 包含在select中的子查询(不在from子句)。
不同类型性能从强到差:system > const > eq_ref > ref > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all。 建议大家在平时书写sql时,多用explain进行分析,尝试去优化代码,只有不断的实践,才能让自己的sql能力越来越强。
EXPLAIN 结果中的type)字段 Tips:常见的扫描方式 system:系统表,少量数据,往往不需要进行磁盘IO const:常量连接 eq_ref:主键索引(primary key)或者非空唯一索引(unique not null)等值扫描 ref:非主键非唯一索引等值扫描 range:范围扫描 index:索引树扫描
type: ref 表示使用了索引进行等值比较。 rows: 1 表示MySQL估计需要检索1行。 filtered: 100.00 表示过滤效果好。 Extra: NULL 表示无额外信息。 EXPLAIN输出的字段解析 执行EXPLAIN语句后,输出结果中的字段提供了关于查询执行计划的详细信息。以下是一些常见的输出字段及其含义: ...
#(5) 执行计划type为eq_ref:唯一性索引扫描 explain select * from user_man ,user_woman where user_man.manid = user_woman.womanid; explain select * from user_man where manid in (select womanid from user_woman); #(6)执行计划type为const、system:当MySQL对查询某部分进行优化,并转换为一个常...