解释mysql中的计划含义

解释mysql中的计划含义,mysql,sql,Mysql,Sql,我使用解释计划,但我不知道它的真正含义是什么 explain extended select * from (select type_id from con_consult_type cct where cct.consult_id = (select id from con_consult where id = 1)) cctt left

我使用解释计划,但我不知道它的真正含义是什么

explain extended 
select * 
from (select type_id from con_consult_type cct  
      where cct.consult_id = (select id 
                              from con_consult 
                              where id = 1)) 
      cctt left join con_type ct on cctt.type_id = ct.id;
结果是

我谷歌派生的是临时表,但它的sql是什么临时表?是ctt表吗? 步骤2是cctt左连接con_类型ct在cctt.type_id=ct.id上的结果? FK_CONSULT_TO_CONSULT_类型为CONSULT_id refere con_CONSULT id列, 如何在sql中使用索引? 获取ctt的所有结果,然后使用索引过滤器


请帮助我解释解释的含义。

这是一个糟糕的查询,要了解
解释
输出的基础知识,所有子查询和联接都会发生太多问题

我可以简略地介绍一些要点

  • “行”列:越少越好,它显示数据库必须扫描多少行,少于几百行越好,通常表示它能够从索引中找到您的数据
  • “可能的_键”:和“键”:如果“行”很大,您可能需要tweek您的键,以便为引擎提供查找数据的帮助
  • “类型”:联接的类型
回答你的一些问题

  • “临时表的sql”-它是sql中的第一个子查询
  • 使用
    FK_CONSULT_TO_CONSULT_TYPE
    您无需执行任何操作,引擎已将其作为索引,这就是解释所说的
  • 查询分为3个基本步骤;选择数据、筛选和联接。explain中的每一行都是这些操作中一个或多个操作的详细信息,它可能不一定与SQL的特定部分相关,因为引擎可能已将各个部分组合成一个部分