Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
7. Gli Hint
Atos, Atos and fish symbol, Atos Origin and fish symbol, Atos Consulting, and the fish symbol itself are registered trademarks of Atos Origin SA. 30 December 2021
© 2006 Atos Origin. Private for the client. This report or any part of it, may not be copied, circulated, quoted without prior written approval from Atos Origin or the
client.
Obiettivi
Vantaggi:
riduzione del tempo di parse
guidano oracle a scegliere il piano di esecuzione voluto
se errati vengono, semplicemente, ignorati
Svantaggi:
non standard SQL
Sintassi:
CHOOSE
Permette all’ottimizzatore di scegliere tra il CBO ed il
RBO. L’ottimizzatore decide in base alla presenza o
meno di statistiche.
RULE
Indica all’ottimizzatore di utilizzare il RBO.
FIRST_ROWS
Indica all’ottimizzatore di utilizzare il CBO e di
scegliere tra tutti i piani di esecuzione quello che ha il
minore tempo di esecuzione per restituire tutte le
righe.
ALL_ROWS
Indica all’ottimizzatore di utilizzare il CBO e di
scegliere tra tutti i piani di esecuzione quello che ha il
minore tempo di esecuzione per restituire la prima
riga.
Execution Plan
----------------------------------------------------------
0 SELECT Optimizer=HINT: ALL_ROWS (Cost=3 Card=12 Bytes=192)
1 0 HASH JOIN (Cost=3 Card=12 Bytes=192)
2 1 TABLE ACCESS (FULL) OF 'DEPT' (Cost=1 Card=4 Bytes=44)
3 1 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=12 Bytes=60)
Execution Plan
----------------------------------------------------------
0 SELECT Optimizer=HINT: FIRST_ROWS (Cost=13 Card=1 Bytes=192)
1 0 NESTED LOOPS (Cost=13 Card=12 Bytes=192)
2 1 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=12 Bytes=60)
3 1 TABLE ACCESS (BY IX ROWID) OF 'DEPT' (Cost=1 Card=4 Bytes=44)
4 3 INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)
Execution Plan
----------------------------------------------------------
0 SELECT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=33)
1 0 TABLE ACCESS (BY IX ROWID) OF 'EMP' (Cost=1 Card=1 Bytes=33)
2 1 INDEX (UNIQUE SCAN) OF 'PK_EMP' (UNIQUE)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=33)
1 0 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=1 Bytes=33)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=3)
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=10 Bytes=30)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=3)
1 0 SORT (AGGREGATE)
2 1 INDEX (FAST FULL SCAN) OF 'PK_EMP' (UNIQUE) (Cost=1 Card=10
Bytes=30)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=5 Card=12 Bytes=252)
1 0 NESTED LOOPS (Cost=5 Card=12 Bytes=252)
2 1 TABLE ACCESS (FULL) OF 'DEPT' (Cost=1 Card=4 Bytes=44)
3 1 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=12 Bytes=120)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=12 Bytes=252)
1 0 HASH JOIN (Cost=3 Card=12 Bytes=252)
2 1 TABLE ACCESS (FULL) OF 'DEPT' (Cost=1 Card=4 Bytes=44)
3 1 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=12 Bytes=120)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=5 Card=12 Bytes=252)
1 0 MERGE JOIN (Cost=5 Card=12 Bytes=252)
2 1 TABLE ACCESS (BY IX ROWID) OF 'DEPT' (Cost=2 Card=4 Bytes=44)
3 2 INDEX (FULL SCAN) OF 'PK_DEPT' (UNIQUE) (Cost=1 Card=4)
4 1 SORT (JOIN) (Cost=2 Card=12 Bytes=120)
5 4 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=12 Bytes=120)
ORDERED
Indica all’ottimizzatore di eseguire il join rispettando
l’ordine dato nella clausola FROM.
LEADING (<table>)
Indica all’ottimizzatore di utilizzare la tabella data
come la prima nell’ordine di esecuzione del join.
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=13 Card=12 Bytes=252)
1 0 NESTED LOOPS (Cost=13 Card=12 Bytes=252)
2 1 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=12 Bytes=120)
3 1 TABLE ACCESS (BY IX ROWID) OF 'DEPT' (Cost=1 Card=4 Bytes=44)
4 3 INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)
CACHE (<table>)
I blocchi recuperati durante un full-table-scan
vengono “caricati” nella buffer cache come MRU
(Most Recently Used). Ossia, vengono mantenuti
nella cache il più possibile.
NOCACHE (<table>)
I blocchi recuperati durante un full-table-scan
vengono “caricati” nella buffer cache come LRU
(Least Recently Used). Questo è il default.