explain是什么?使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。
explain的使用方法非常的简单,explain+sql就可以了。下面我们来简单的执行一条
mysql> explain select * from student where id=1000;
+----+-------------+---------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+---------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
| 1 | SIMPLE | student | NULL | const | PRIMARY | PRIMARY | 4 | const | 1 | 100.00 | NULL |
+----+-------------+---------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.04 sec)
select * from student where name = '张三';
1, Hello
2, How are
表B有以下数据:
1, world!
2, you?
想象一下eq_ref为A和B之间的JOIN:
select A.text, B.text where A.ID = B.ID
这个JOIN非常快,因为对于表A中扫描的每一行,表B中只能有一行满足JOIN条件。一个,不超过一个。那是因为B.id是独一无二的。
至少是需要优化到range级别的,这里我们可以参考阿里巴巴开发手册的推荐:
如果我们的type是all或者index级别均是需要优化的。