余温|SQL:代码实例介绍 explain 反馈参数 id

参数作用:对 SQL 中的表进行编号
参数特点有 3 个:

  • 根据执行顺序的不同 , 表的编号会变化
  • 出现编号相同的情况 , 执行顺序会由上到下
  • 出现编号不同的情况 , 执行顺序会由大到小
因此 , 总的执行顺序是 , 由大到小 , 由上到下 。
余温|SQL:代码实例介绍 explain 反馈参数 id规则依据参数特点的制定依据是笛卡尔积 。 笛卡尔积会把表格中的每行数据都相乘 , 组成一张超大的表格 。
因此 , 在得到这张超大表格的过程中 , 以最小的代价得到相同的结果是优化的主要方向 。
余温|SQL:代码实例介绍 explain 反馈参数 id从图中可以看到 , 由行数少的表向行数多的表乘积为笛卡尔积产生的中间数据更少 。
余温|SQL:代码实例介绍 explain 反馈参数 id
余温|SQL:代码实例介绍 explain 反馈参数 id因此 , 最少的中间数据量 , 能带来最高的运算效率 。
代码实例
余温|SQL:代码实例介绍 explain 反馈参数 id
  • 实例 1
目的:查看相同编号的表格执行顺序
执行内容:查询课程编号为 2 或教师证编号为 3 的老师信息
select t.* from teacher t, course c, teacherCard tc where t.tid = c.tid and t.tcid = tc.tcid and (c.cid=2 or tc.tcid=3)执行结果:
余温|SQL:代码实例介绍 explain 反馈参数 idexplain 结果:
explain select t.* from teacher t, course c, teacherCard tc where t.tid = c.tid and t.tcid = tc.tcid and (c.cid=2 or tc.tcid=3)
余温|SQL:代码实例介绍 explain 反馈参数 id
余温|SQL:代码实例介绍 explain 反馈参数 id
余温|SQL:代码实例介绍 explain 反馈参数 id
  • 实例 2
目的:查看不同编号的表格执行顺序
执行内容:查询教授 SQL 课程的老师的描述
select tc.tcdesc from teacherCard tc, course c, teacher t where c.tid = t.tid and ta.tcid = tc.tcid and c.cname = 'sql'将多表连接变成子查询 , 使得编号产生不同的顺序 。
select tc.tcdesc from teacherCard tc where tc.tcid = (select t.tcid from teacher t where t.tid = (select c.tid from course c where c.cname = 'sql'))执行结果:
余温|SQL:代码实例介绍 explain 反馈参数 idexplain 结果:
explain select tc.tcdesc from teacherCard tc where tc.tcid = (select t.tcid from teacher t where t.tid = (select c.tid from course c where c.cname = 'sql'))