【发布时间】:2012-02-18 19:18:38
【问题描述】:
我尝试像这样运行一个执行计划:
ALTER SESSION SET timed_statistics = TRUE;
set autotrace on explain;
SELECT ename, dname
FROM emp e, dept d
WHERE e.deptno = d.deptno
AND e.hiredate > TO_DATE('29-JUN-1996','DD-MON-YYYY');
set autotrace off;
输出:
-------------------------------------------------- ----------------------------------------------------------- |身份证 |操作 |姓名 |行 |字节 |成本 (%CPU)|时间 | -------------------------------------------------- ----------------------------------------------------------- | 0 |选择声明 | | 14 | 420 | 6 (17)| 00:00:01 | | 1 |合并加入 | | 14 | 420 | 6 (17)| 00:00:01 | | 2 |按索引 ROWID 访问表|部门 | 4 | 52 | 2 (0)| 00:00:01 | | 3 |索引全扫描 | DEPT_PRIMARY_KEY | 4 | | 1 (0)| 00:00:01 | |* 4 |排序加入 | | 14 | 238 | 4 (25)| 00:00:01 | |* 5 |表访问完全 |电磁脉冲 | 14 | 238 | 3 (0)| 00:00:01 | -------------------------------------------------- ----------------------------------------------------------- 谓词信息(由操作 id 标识): -------------------------------------------------- - 4 - 访问("E"."DEPTNO"="D"."DEPTNO") 过滤器(“E”。“DEPTNO”=“D”。“DEPTNO”) 5 - 过滤器("E"."HIREDATE">TO_DATE(' 1996-06-29 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))如您所见,时间始终为 1 毫秒!
我做错了什么?我必须将变量设置为 true 吗?
【问题讨论】:
-
您的数据集太小(14 行!)。添加几百万行,分析两个表,你应该得到有意义的估计