执行计划时间始终为1毫秒

时间:2012-01-25 15:46:13

标签: oracle sql-execution-plan

我尝试运行这样的执行计划:

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吗?

1 个答案:

答案 0 :(得分:3)

实际上显示的是1秒的时间,而不是1毫秒。

它显示1秒的原因是你的数据集微不足道。如果您想考虑实际的时间估算,请尝试添加更多数据。使用少量数据,1秒可能太高了。实际上,您可能会看到接近1毫秒的响应时间。 (您的示例在EMP中只有14行。)

希望有所帮助。