(1)extra一些常用的信息:
如SQL EXPLAIN SELECT x1 FROM t1 WHERE x1=’xxx’,执行计划如下:
+----+-------------+-------+------------+------+---------------+----------+---------+-------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+----------+---------+-------+------+----------+-------------+
| 1 | SIMPLE | t1 | NULL | ref | index_x1 | index_x1 | 456 | const | 25 | 100.00 | Using index |
+----+-------------+-------+------------+------+---------------+----------+---------+-------+------+----------+-------------+
可以看到执行计划,首先是访问了t1表,使用的是ref访问方式,也就是基于二级索引去查找,找的是 index_x1 这个索引,这个索引的最大数据长度是456字节,查找的目标是一个const代表的常量值,通过索引可以查询出来25条数据,经过其他条件筛选过后,最终剩下数据是100%。
extra:是Using index,其实就是说这次查询,仅仅涉及到了一个二级索引,不需要回表,因为他仅仅查出来了 x1这个字段,直接从index_x1索引里查就行了。
如果没有回表操作,仅仅在二级索引里执行,extra会告诉你是Using index;
另外,如果有个SQL语句是 SELECT * FROM t1 WHERE x1>’xxx’ AND x1 LIKE ‘%xxx’,此时会先在二级索引 index_x1 里查找,查找出来的结果还会额外的跟 x1 LIKE ‘%xxx’条件做比对,如果满足条件才会被筛选出来,这种情况下,extra显示的是 Using index condition;