查询的大致行数和执行时间

时间:2012-10-24 17:36:33

标签: database oracle

我想在执行 之前查询的行数和执行时间。有可能吗?

1 个答案:

答案 0 :(得分:4)

查询计划可以显示优化程序估计将返回(或修改)的行数以及优化程序估计查询运行的时间。因为这些估计与表格的统计数据有关,然而,它们完全可能是非常不正确的。

如果我采用简单的查询,

SQL> explain plan for select count(*) from emp where deptno = 10;

Explained.

SQL> select *
  2    from table( dbms_xplan.display );

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 2083865914

---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |     3 |     3   (0)| 00:00:01 |
|   1 |  SORT AGGREGATE    |      |     1 |     3 |            |          |
|*  2 |   TABLE ACCESS FULL| EMP  |     3 |     9 |     3   (0)| 00:00:01 |
---------------------------------------------------------------------------

Predicate Information (identified by operation id):

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------

   2 - filter("DEPTNO"=10)

14 rows selected.

Oracle希望对EMP表进行全表扫描,过滤掉deptno = 10将返回3行且需要1秒的行(RowsTime具有id = 2的行的查询计划中的列。 Oracle期望COUNT(*)行上的id = 1聚合将其减少到1行。因此,在id = 0的行上,Oracle期望SELECT语句返回1行并运行1秒。