暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片
浅析Oracle SQL语句的执行计划.pdf
219
7页
2次
2023-08-14
25墨值下载
理解 Oracle SQL 语句的执行计划
【示例】
1 SQL 语句
2 执行计划
3 执行计划树
4 执行结果统计
1. 执行计划表示
Id:执行计划的行表示,每行代表一个执行过程,但不是 SQL 的执行顺序,从 0 开始;
Operation执行的操作描述,该描述是按前导空格进行分层的二叉树,“由根及叶”表示,
前导空格最长的那行层级最低,本例中 ID=8,但实际的执行顺序是“由叶到根”,自上而
下,第一个叶子节点最先被执行,即 ID=4,然后向下,第二个叶子,ID=6,继续,下一个
叶子,ID=8,到底,逐层递退,最后输出总结果,即 ID=0
Oper Id:该 Id 是笔者为表述二叉树的构成加上去的,从 1 开始,以红圈标示;
Cost%CPU:表示 IO+CPU 成本的总和,即,Cost = I/O cost + CPU costOracle 会按某
个算法将 CPU cost 转换成 IO cost %CPU 表示 CPU 成本占总 COST 的百分比,即四舍五入
后的 CPU/(CPU+IO) X100% 值,如 ID=3 hash joinCPU 占总 cost 10%,而总 cost
10,据此可知,该操作的 CPU cost = 10 X 10% = 1,而 IO cost = 10 10X10% =9
2. 执行计划的遍历
SQL 语句二叉树的执行采用后序遍历其规则为先左后右、先子后父、左支发起、
层递退。即:对于当前结点,先输出它的左孩子,然后输出它的右孩子,最后输出该结点
而针对于任一结点,都必须按前述规则一直向下搜索,直到发现它是“盲端”,即叶子结点
时为止。
故上述操作实际执行次序红圈数字表示为:③④⑤⑥⑦⑧-11结束
ID 则为:4-6-8-7-5-3-9-2-10-1-0
本例的具体步骤表述如下:
1) 先“全表扫描”(TABLE ACCESSS FULL)第一个数据表 department1,别名为 d
2) 再全表扫描数据表 locations1,别名为 l
3) 再全扫第二个 employees1 表,别名为 e
4) 3)执行缓冲区排序;
5) 42)两表执行“笛卡尔积”;
of 7
25墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜