余温|SQL:代码实例介绍 explain 反馈参数 id
参数作用:对 SQL 中的表进行编号
参数特点有 3 个:
- 根据执行顺序的不同 , 表的编号会变化
- 出现编号相同的情况 , 执行顺序会由上到下
- 出现编号不同的情况 , 执行顺序会由大到小
规则依据参数特点的制定依据是笛卡尔积 。 笛卡尔积会把表格中的每行数据都相乘 , 组成一张超大的表格 。
因此 , 在得到这张超大表格的过程中 , 以最小的代价得到相同的结果是优化的主要方向 。
从图中可以看到 , 由行数少的表向行数多的表乘积为笛卡尔积产生的中间数据更少 。
因此 , 最少的中间数据量 , 能带来最高的运算效率 。
代码实例
- 实例 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)
执行结果:explain 结果:
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)
- 实例 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'))
执行结果:explain 结果:
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'))
- IT世界|导致MySQL索引失效的几种常见写法,请看这里
- 空心|记 Arthas 实现一次 CPU 排查与代码热更新
- 路飞写代码|59连问仍需联合调查,贝索斯的亚马逊被针对?,百亿订单成泡影
- 余温|华为麒麟9000芯片只有1000万片,华为表示可以撑一年半
- 薄情先生|你所需要知道的代码整洁之道
- 龙之队|聊聊Mysql——慢sql优化方法论
- 余温|1拖7,独立分控!高品质ORICO群控USB3.0扩展器体验
- 余温|董明珠时代过去了?小米与格力集团合作,格力空调被美的反超
- 小镇的夕阳|修改硬盘MBR代码,用1024字节实现一个操作系统启动管理器
- 星球狂想战队|推荐一款脚手架工具plop,利用模板批量生成代码,省时省力