クエリを実行する前に、クエリの行数と実行時間を評価したいと考えています。出来ますか?
質問する
230 次
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.
EMP
Oracle は、テーブルの完全なテーブル スキャンが行を除外し、deptno = 10
3 行を返し、1 秒かかることを期待しています (クエリ プランのRows
とTime
の列は、 の行に対応しますid = 2
)。COUNT(*)
Oracle は、行の集計がid = 1
それを 1 行に減らすことを期待しています。したがって、 の行ではid = 0
、Oracle はSELECT
ステートメントが 1 行を返し、1 秒間実行されることを期待しています。
于 2012-10-24T17:47:47.923 に答える