MySQL EXPLAIN解析之id

来源:互联网 发布:vb小程序代码 编辑:程序博客网 时间:2024/06/07 05:14

        在写SQL的时候,如果执行太慢,通常使用explain命令,查看当前语句的执行计划,也就是看MySQL是如何解析执行当前SQL的。

使用之后,可以看到返回一个表单:

idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra


第一列的id,是序号,可不是我们常用的自增序号,而是MySQL执行顺序,可以分种情况:

1、只有1条数据

EXPLAIN
SELECT
* FROM test1 WHERE id=1;

idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra1SIMPLEtest1 constPRIMARYPRIMARY4const1100 

这个就比较简单,只有一条。


2、有多条数据,但值都相同

idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra1SIMPLEtest1 constPRIMARYPRIMARY4const1100 1SIMPLEtest2 constPRIMARYPRIMARY4const1100 

当只有一个id值时,MySQL按顺序加载,即先加载test1,再加载test2。


3、有多条,有相同和不同

idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra1SIMPLE<subquery2> ALL     100 1SIMPLEt1 eq_refPRIMARYPRIMARY4<subquery2>.id1100 1SIMPLEt2 eq_refPRIMARYPRIMARY4<subquery2>.id1100 2MATERIALIZEDtest3 ALL    12100 

当id有多种值时,数字越大,加载优先级越高

原创粉丝点击