Database Reference
In-Depth Information
** Generated dynamic sampling query:
query text :
SELECT /* OPT_DYN_SAMP */ /*+ ALL_ROWS IGNORE_WHERE_CLAUSE NO_PARALLEL(SAMPLESUB)
opt_param('parallel_execution_enabled', 'false') NO_PARALLEL_INDEX(SAMPLESUB) NO_SQL_TUNE */
NVL(SUM(C1),0), NVL(SUM(C2),0) FROM (SELECT /*+ IGNORE_WHERE_CLAUSE NO_PARALLEL("T1")
FULL("T1") NO_PARALLEL_INDEX("T1") */ 1 AS C1, CASE WHEN "T1"."A"=:B1 AND "T1"."B"=:B2 THEN 1
ELSE 0 END AS C2 FROM "SYS"."T1" SAMPLE BLOCK (13.333333 , 1) SEED (1) "T1") SAMPLESUB
*** 2013-04-20 21:01:50.353
** Executed dynamic sampling query:
level : 4
sample pct. : 13.333333
actual sample size : 1209
filtered sample card. : 0
orig. card. : 11000
block cnt. table stat. : 30
block cnt. for sampling: 30
max. sample block cnt. : 5
sample block cnt. : 4
min. sel. est. : 0.00784302
** Using single table dynamic sel. est. : 0.00057316
Der Wert von 3,999999 beträgt 13,333333% (der Prozentsatz aus der Klausel SAMPLE
BLOCK) von der Anzahl der Tabellenblöcke (block cnt. table stat. : 30). Dieser abgerunde-
te Wert entspricht der Anzahl der zu prüfenden Blöcke aus dem obigen Ausschnitt (sample
block cnt. : 4).
Dynamic Sampling kann auch beim Generieren der Explain-Pläne angewendet wer-
den. Das ist selbstverständlich für SQL-Anweisungen ohne Bind-Variablen, weil Dynamic
Sampling in diesem Fall bei Parsing ausgeführt wird. Wenn eine SQL-Anweisung mit Bind
Variablen lediglich geparst wird, und die jeweilige Tabelle keine Optimizer Statistiken hat,
wird Dynamic Sampling auch angewendet.
SQL> exec dbms_stats.delete_table_stats(user,'T1',no_invalidate=>false)
SQL> set autotrace traceonly explain
SQL> select count(*) from t1 where a = :b1 and b = :b2;
Execution Plan
----------------------------------------------------------
Plan hash value: 720960414
-------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 26 | 5 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | 26 | | |
|* 2 | TABLE ACCESS BY INDEX ROWID| T1 | 1 | 26 | 5 (0)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | I_T1 | 58 | | 1 (0)| 00:00:01 |
-------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("B"=TO_NUMBER(:B2))
3 - access("A"=TO_NUMBER(:B1))
Note
-----
- dynamic sampling used for this statement (level=2)
Search WWH ::




Custom Search