mysql之解释,optimizer_trace执行计划

  

  一、解释   

  

  mysql>解释选择主机、用户从用户插件;
  + - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + +
  | | id select_type表| | |型possible_keys关键| | key_len | ref额外| | |行
  + - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + +
  | 1 |简单用户所有零零| | | | |空零零| | 5 | |
  + - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + +
  1行集(0.00秒)   

  

  1.身份证   

  

  1. sql执行顺序:从大到小的执行。如果相等先执行上面的,再执行下面的。(id号为sql代码中选择从左到右出现的顺序号)
  
  2. select_type就是选择类型,可以有以下几种
  (1)简单
  简单选择(不使用联盟或子查询等)例如:
  程序代码
  mysql>解释select * t3中id=3952602;,
  + - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - + +,
  | | id select_type表| | |型possible_keys关键| | key_len | ref额外| | |行,
  + - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - + +,
  | 1 |简单| t3 | const |初选,idx_t3_id主要| | 4 | const | 1 | |,
  + - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - + +   

  

  (2)主要
。   最外层的选择。例如:
  程序代码
  mysql>解释select * from (select * t3中id=3952602),,
  + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + +,
  | | id select_type表| | |型possible_keys关键| | key_len | ref额外| | |行,
  + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + +,
  主要| 1 | | |系统零零零零| 1 | | | | | |,
  | 2 |中| t3 | const |初选,idx_t3_id主要| | 4 | | 1 | |,
  + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - +   

  

  (3).UNION
  联盟中的第二个或后面的选择语句。例如
  程序代码
  mysql>解释select * t3中id=3952602 union all select * t3;,
  + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - + +,
  | | id select_type表| | |型possible_keys关键| | key_len | ref额外| | |行,
  + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - + +,
  主要| 1 | | t3 | const |初选,idx_t3_id主要| | 4 | const | 1 | |,
  | 2 |联盟t3 | | |空零零零| | 1000 | | | |,
  零| |联盟结果| | |所有空零零零零| | | | | |,
  + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - + +   

  

  (4).DEPENDENT联盟
  联盟中的第二个或后面的选择语句,取决于外面的查询
  程序代码
  mysql>解释select * t3中id(从t3选择id, id=3952602 union all从t3)选择id;,
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

mysql之解释,optimizer_trace执行计划