我尝试运行这样的执行计划:
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;
输出:
------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 14 | 420 | 6 (17)| 00:00:01 | | 1 | MERGE JOIN | | 14 | 420 | 6 (17)| 00:00:01 | | 2 | TABLE ACCESS BY INDEX ROWID| DEPT | 4 | 52 | 2 (0)| 00:00:01 | | 3 | INDEX FULL SCAN | DEPT_PRIMARY_KEY | 4 | | 1 (0)| 00:00:01 | |* 4 | SORT JOIN | | 14 | 238 | 4 (25)| 00:00:01 | |* 5 | TABLE ACCESS FULL | EMP | 14 | 238 | 3 (0)| 00:00:01 | ------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 4 - access("E"."DEPTNO"="D"."DEPTNO") filter("E"."DEPTNO"="D"."DEPTNO") 5 - filter("E"."HIREDATE">TO_DATE(' 1996-06-29 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
如您所见,时间总是1毫秒!
我做错了什么?我必须将变量设置为true吗?
答案 0 :(得分:3)
实际上显示的是1秒的时间,而不是1毫秒。
它显示1秒的原因是你的数据集微不足道。如果您想考虑实际的时间估算,请尝试添加更多数据。使用少量数据,1秒可能太高了。实际上,您可能会看到接近1毫秒的响应时间。 (您的示例在EMP中只有14行。)
希望有所帮助。