SQL> select emp.deptno, ename 2 from emp, dept 3 where emp.deptno = dept.deptno 4 order by empno;
Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 SORT (ORDER BY) ――――――――SORT_AREA_SIZE 2 1 MERGE JOIN 3 2 SORT (JOIN)――――――――SORT_AREA_RETAINED_SIZE 4 3 TABLE ACCESS (FULL) OF 'DEPT' 5 2 SORT (JOIN) ――――――――SORT_AREA_RETAINED_SIZE 6 5 TABLE ACCESS (FULL) OF 'EMP'
Statistics ---------------------------------------------------------- 0 recursive calls 0 db block gets 14 consistent gets 0 physical reads 0 redo size 478 bytes sent via SQL*Net to client 503 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 3 sorts (memory) 0 sorts (disk) 3 rows processed
SQL>
|
一个执行计划可以包含多个排序例,如上面的例子,其中包含了两个表的排序-合并联接,然后又执行 ORDER BY 子句的排序,所以,总共构成了三种排序。如果单个服务器正执行排序过程,那么它在执行 ORDER BY 排序时使用:
? SORT_AREA_SIZE 大小的区域(以字节为单位)用于活动排序
? 两个大小由 SORT_AREA_RETAINED_SIZE 指定的区域用于联接排序