2017-06-21 115 views
0

我有如下查詢,其解釋計劃如下所示。Oracle解釋計劃中的時間不一致

該查詢需要2.3秒。

,而是要解釋計劃顯示索引快速全掃描顯示時間= 0時10分06秒秒

有什麼理由?

select count(*) from c1 
COUNT(*) 
---------- 
    68656440 

Elapsed: 00:00:02.31 

Execution Plan 
---------------------------------------------------------- 
Plan hash value: 2610173813 

------------------------------------------------------------------------- 
| Id | Operation    | Name | Rows | Cost (%CPU)| Time  | 
------------------------------------------------------------------------- 
| 0 | SELECT STATEMENT  |   |  1 | 50450 (1)| 00:10:06 | 
| 1 | SORT AGGREGATE  |   |  1 |   |   | 
| 2 | INDEX FAST FULL SCAN| PF_TEST | 83M| 50450 (1)| 00:10:06 | 
------------------------------------------------------------------------- 

Note 
----- 

- 用於這個聲明(等級= 2)

統計


 0 recursive calls 
     0 db block gets 
185865 consistent gets 
185820 physical reads 
     0 redo size 
    529 bytes sent via SQL*Net to client 
    523 bytes received via SQL*Net from client 
     2 SQL*Net roundtrips to/from client 
     0 sorts (memory) 
     0 sorts (disk) 
     1 rows processed 
+0

你的方法是什麼? –

+0

設置自動跟蹤 – oradbanj

+1

解釋計劃是一個估計,所以估計是你需要10:06秒來執行你的查詢。 83M行的估計是真實的嗎? –

回答

2

解釋計劃動態採樣是甲骨文認爲它會執行該語句的估計,試試這個:

set timi on 
select count(*) from c1; 
set timi off 

select * from table(dbms_xplan.display_cursor(null,null,'allstats last')); 

然後看看A-time專欄,它是否準確? 應該是。

+0

是的 - 現在這是準確的 – oradbanj

+0

這是因爲這一次,它是基於聲明的真實執行而不是估計。如果它回答你的問題,你可以接受我的答案。 –