1

クエリを実行する前に、クエリの行数と実行時間を評価したいと考えています。出来ますか?

4

1 に答える 1

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.

EMPOracle は、テーブルの完全なテーブル スキャンが行を除外し、deptno = 103 行を返し、1 秒かかることを期待しています (クエリ プランのRowsTimeの列は、 の行に対応しますid = 2)。COUNT(*)Oracle は、行の集計がid = 1それを 1 行に減らすことを期待しています。したがって、 の行ではid = 0、Oracle はSELECTステートメントが 1 行を返し、1 秒間実行されることを期待しています。

于 2012-10-24T17:47:47.923 に答える