• Oracle SQL执行计划操作(7)——排序相关操作


    7.  排序相关操作

    该类操作和SQL语句执行计划中的排序操作相关。根据不同的具体SQL语句及其他相关因素,如下各操作可能会出现于相关SQL语句的执行计划。

    1)BUFFER SORT

    在会话服务进程内存中对某个行源数据进行排序或其他相关操作,该操作最早出现于Oracle 9.0.1版本。该操作具体如图7-1中节点3所示。

    图7-1 排序相关操作BUFFER SORT示例

    2)SORT AGGREGATE

    通过sum,count,max,min等函数获取数据的汇聚结果,期间,需要对相关行源数据进行排序实现。该操作具体如图7-2中节点1所示。

    图7-2 排序相关操作SORT AGGREGATE示例

    3)SORT CREATE INDEX

    在索引创建期间进行的排序操作。该操作具体如图7-3中节点2所示。

    图7-3 排序相关操作SORT CREATE INDEX示例

    4)SORT GROUP BY

    基于列值对数据行进行排序分组操作。该操作具体如图7-4中节点1所示。

    图7-4 排序相关操作SORT GROUP BY示例

    5)SORT GROUP BY ROLLUP

    基于列值对数据行进行排序分组并进行合计操作。该操作具体如图7-5中节点1所示。

    图7-5 排序相关操作SORT GROUP BY ROLLUP示例

    6)SORT GROUP BY STOPKEY

    基于列值对数据行进行排序分组操作,并通过rownum伪列对返回的数据行数进行限定,rownum相关条件不再满足时,即终止相关操作并输出结果。

    --注:

          1)rownum: 一个伪列,其数据并非真实存在的数据,而是获取其他字段数据时,输出结果集中每行数据的序号。通常可用于限定SQL语句返回结果的行数,从而对相关SQL语句进行性能优化。

    该操作具体如图7-6中节点3所示。

    图7-6 排序相关操作SORT GROUP BY STOPKEY示例

    7)SORT GROUP BY NOSORT

    基于列值对数据行进行分组操作,因数据行输入顺序与需求顺序一致,该操作无需排序就可直接对数据行进行分组。例如:通过索引范围或完全扫描输出的数据行无需排序就可直接进行分组。该操作具体如图7-7中节点1所示。

    图7-7 排序相关操作SORT GROUP BY NOSORT示例

    8)SORT GROUP BY NOSORT ROLLUP

    基于列值对数据行进行分组和合计操作,因数据输入顺序与需求顺序一致,无需排序就可直接对数据行进行分组和合计。该操作具体如图7-8中节点1所示。

    图7-8 排序相关操作SORT GROUP BY NOSORT ROLLUP示例

    9)SORT ORDER BY

    基于相关列值对数据行进行排序,以实现数据的按序输出。该操作具体如图7-9中节点1所示。

    图7-9 排序相关操作SORT ORDER BY示例

    10)SORT ORDER BY STOPKEY

    基于相关列值对数据行进行排序,以实现数据的按序输出,且通过rownum伪列限定返回的数据行数。该操作具体如图7-10中节点3所示。

    图7-10 排序相关操作SORT ORDER BY STOPKEY示例

    11)SORT UNIQUE

    基于相关列值对数据行进行排序并去重,以输出无重复数据的结果集。该操作具体如图7-11中节点1所示。

    图7-11 排序相关操作SORT UNIQUE示例

    12)SORT UNIQUE NOSORT

    基于相关列值对已有序数据行进行去重,以输出无重复数据的结果集。该操作具体如图7-12中节点1所示。

    图7-12 排序相关操作SORT UNIQUE NOSORT示例

    13)SORT UNIQUE STOPKEY

    基于相关列值对数据行进行排序并去重,以输出无重复数据的结果集,且通过rownum伪列限定返回的数据行数。该操作具体如图7-13中节点3所示。

    图7-13 排序相关操作SORT UNIQUE STOPKEY示例

    14)SORT PARTITION JOIN

    基于连接列值对数据行进行排序和分组(分区),以完成后续的连接操作,该操作出现于分组(分区)外连接中。

    --注:

          1)这里的“分区”不是指表的分区,而是指执行计划中一种特定的操作。

    该操作具体如图7-14中节点6所示。

    图7-14 排序相关操作SORT PARTITION JOIN示例

  • 相关阅读:
    企企通:数字化浪潮下,企业如何利用间接采购策略,实现降本增效?
    物联网AI MicroPython学习之语法 sys系统相关
    kafka
    Java面试题:Java中垃圾回收机制是如何工作的?请描述几种常见的垃圾回收算法
    C++编译底层
    2.2python 常用的数据结构之列表(list)_python量化实用版教程(初级)
    Windows配置SonarQube代码审查工具详细步骤(附带IDEA SonarLint插件使用)
    20220810NOI模拟赛--考后总结
    DolphinScheduler 进阶(工作流传参)
    php循环读取txt里面关键词并按页数
  • 原文地址:https://blog.csdn.net/LHDZ_BJ/article/details/127964279