排序操作
以下操作为与数据排序相关的操作
o BUFFER SORT
在内存中进行排序操作。
提示:BUFFER SORT 并不代表一定会进行排序操作。有时是 Oracle 为了借助私有内存的工作区来完
成其它操作。
提示 2:这里的内存不是共享内存(buffer cache),而是会话进程的私有内存(PGA)。

o SORT AGGREGATE
通过对数据进行排序,以获取一个聚集结果。
注意,排序聚集操作并不一定意味着存在“排序”过程,例如 COUNT()函数计数。并且,它也不要求在私有内存的排序工作区中完成。

o SORT (CREATE INDEX)
通过对数据进行排序,以构建一个索引。

o SORT (GROUP BY)
通过对数据进行排序,以进行分组操作。

o SORT (GROUP BY ROLLUP)
通过对数据进行排序,以进行分组和合计操作。

o SORT (GROUP BY STOPKEY)
通过对数据进行排序,以进行分组操作,并且在达到终止条件(伪列 ROWNUM 不满足条件)时终止操作。
关键词释义:
ROWNUM 是一个伪列,即它的数据并非实际数据,而是在获取数据(Fetch)时产生的。它的数值代表了数据结果集中每一行数据的序号。
当 ROWNUM 和其他条件共同过滤查询时,获取到了满足所有条件的限定数量的数据后,查询就结束了,不再读取和判断剩余数据。


o SORT (GROUP BY NOSORT)
无需排序(数据物理顺序与逻辑顺序一致),对数据进行分组,因而无需再进行排序操作。 通过索引完全扫描方式读取到的数据就是已经排序好的数据。

o SORT (GROUP BY NOSORT ROLLUP)
无需排序(数据物理顺序与逻辑顺序一致),对数据进行分组和合计,因而无需再进行排序操作。

o SORT (ORDER BY)
将数据排序,以实现数据的按序输出。

o SORT (ORDER BY STOPKEY)
将数据排序,以实现数据的按序输出,并且当满足排序个数(ROWNUM)时,停止排序。
按照某些排序方法(如选择排序)对一组数据进行排序时,会在每一轮中找到最小(或最大) 数据;在对查询结果限制输出数量时,我们只需要找到 n 个最小(或最大)数据,无需再对剩余数据排序。

SORT (UNIQUE)
对数据进行唯一排序,丢弃重复数据。

o SORT (UNIQUE NOSORT)
从已排序的数据中获取唯一数据,丢弃重复数据。

o SORT (UNIQUE STOPKEY)
对数据进行唯一排序,丢弃重复数据,并且当满足排序个数(ROWNUM)时,停止排序。

o SORT PARTITION JOIN
这一操作出现在分区外连接过程中。它对数据进行排序,从而对数据进行分组(分区)。参见
NESTED LOOPS (PARTITION OUTER)中示例。




