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
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=6 Bytes=54)
1 0 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=6 Bytes=54)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=6 Bytes=54)
1 0 TABLE ACCESS (BY IX ROWID) OF 'EMP' (Cost=2 Card=6 Bytes=54)
2 1 INDEX (RANGE SCAN) OF 'EMP_IX1' (NON-UNIQUE) (Cost=1 Card=6)
SELECT *
FROM emp
WHERE empno/10 = 790;
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)
SELECT *
FROM emp
WHERE empno = 790*10;
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT 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=11)
1 0 TABLE ACCESS (FULL) OF 'DEPT' (Cost=1 Card=1 Bytes=11)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=3 Bytes=33)
1 0 TABLE ACCESS (BY IX ROWID) OF 'DEPT' (Cost=2 Card=3 Bytes=33)
2 1 INDEX (FULL SCAN) OF 'DEPT_IX1' (NON-UNIQUE) (Cost=1 Card=3)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=4 Bytes=44)
1 0 SORT (UNIQUE) (Cost=3 Card=4 Bytes=44)
2 1 TABLE ACCESS (FULL) OF 'DEPT' (Cost=1 Card=4 Bytes=44)
SELECT *
FROM dept
WHERE deptno IN (SELECT deptno FROM emp);
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=6 Card=3 Bytes=93)
1 0 NESTED LOOPS (Cost=6 Card=3 Bytes=93)
2 1 VIEW OF 'VW_NSO_1' (Cost=3 Card=3 Bytes=39)
3 2 SORT (UNIQUE) (Cost=3 Card=3 Bytes=6)
4 3 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=12 Bytes=24)
5 1 TABLE ACCESS (BY IX ROWID) OF 'DEPT' (Cost=1 Card=4 Bytes=72)
6 5 INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)
SELECT *
FROM dept a
WHERE EXISTS (SELECT 1 FROM emp b WHERE b.deptno=a.deptno);
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=18)
1 0 FILTER
2 1 TABLE ACCESS (FULL) OF 'DEPT' (Cost=1 Card=1 Bytes=18)
3 1 INDEX (RANGE SCAN) OF 'EMP_IX2' (NON-UNIQUE) (Cost=1 Card=4
Bytes=8)
SELECT *
FROM dept
WHERE deptno NOT IN (SELECT deptno FROM emp);
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=18)
1 0 FILTER
2 1 TABLE ACCESS (FULL) OF 'DEPT' (Cost=1 Card=1 Bytes=18)
3 1 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=1 Bytes=2)
SELECT *
FROM dept a
WHERE NOT EXISTS (SELECT 1 FROM emp b WHERE b.deptno = a.deptno);
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=18)
1 0 FILTER
2 1 TABLE ACCESS (FULL) OF 'DEPT' (Cost=1 Card=1 Bytes=18)
3 1 INDEX (RANGE SCAN) OF 'EMP_IX2' (NON-UNIQUE) (Cost=1 Card=4
Bytes=8)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=1 Bytes=2)
1 0 FILTER
2 1 SORT (GROUP BY) (Cost=3 Card=1 Bytes=2)
3 2 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=12 Bytes=24)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=2)
1 0 SORT (GROUP BY NOSORT) (Cost=1 Card=1 Bytes=2)
2 1 INDEX (RANGE SCAN) OF 'EMP_IX2' (NON-UNIQUE) (Cost=1 Card=4
Bytes=8)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=9 Bytes=117)
1 0 SORT (UNIQUE) (Cost=3 Card=9 Bytes=117)
2 1 NESTED LOOPS (Cost=1 Card=12 Bytes=156)
3 2 TABLE ACCESS (FULL) OF 'DEPT' (Cost=1 Card=4 Bytes=44)
4 2 INDEX (RANGE SCAN) OF 'EMP_IX2' (NON-UNIQUE)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=11)
1 0 FILTER
2 1 TABLE ACCESS (FULL) OF 'DEPT' (Cost=1 Card=1 Bytes=11)
3 1 INDEX (RANGE SCAN) OF 'EMP_IX2' (NON-UNIQUE) (Cost=1 Card=4
Bytes=8)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=6 Card=8 Bytes=80)
1 0 SORT (UNIQUE) (Cost=6 Card=8 Bytes=80)
2 1 UNION-ALL
3 2 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=4 Bytes=40)
4 2 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=4 Bytes=40)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=8 Bytes=80)
1 0 UNION-ALL
2 1 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=4 Bytes=40)
3 1 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=4 Bytes=40)
SELECT *
FROM dept
WHERE deptno=20 OR dname='SALES’;
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=2 Bytes=36)
1 0 TABLE ACCESS (FULL) OF 'DEPT' (Cost=1 Card=2 Bytes=36)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=7 Card=2 Bytes=36)
1 0 SORT (UNIQUE) (Cost=7 Card=2 Bytes=36)
2 1 UNION-ALL
3 2 TABLE ACCESS (BY IX ROWID) OF 'DEPT' (Cost=1 Card=1 Bytes=18)
4 3 IX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)
5 2 TABLE ACCESS (BY IX ROWID) OF 'DEPT' (Cost=2 Card=1 Bytes=18)
6 5 IX (RANGE SCAN) OF 'DEPT_IX1' (NON-UNIQUE) (Cost= 1 Card=1)
UPDATE <table1>
SET (<field1>, <field2>) = (
SELECT <field1>, <field2>
FROM <table2>
WHERE ...)
WHERE … ;
UPDATE bonus a
SET a.sal = (SELECT b.sal FROM emp b WHERE b.deptno = 10),
a.comm = (SELECT b.comm FROM emp b WHERE b.deptno = 10);
Execution Plan
----------------------------------------------------------
0 UPDATE STATEMENT Optimizer=CHOOSE (Cost=1 Card=21 Bytes=546)
1 0 UPDATE OF 'BONUS'
2 1 TABLE ACCESS (FULL) OF 'BONUS' (Cost=1 Card=21 Bytes=546)
3 0 TABLE ACCESS (BY IX ROWID) OF 'EMP' (Cost=2 Card=4 Bytes=20)
4 3 INDEX (RANGE SCAN) OF 'EMP_IX2' (NON-UNIQUE) (Cost=1 Card=4)
5 0 TABLE ACCESS (BY IX ROWID) OF 'EMP' (Cost=2 Card=4 Bytes=16)
6 5 INDEX (RANGE SCAN) OF 'EMP_IX2' (NON-UNIQUE) (Cost=1 Card=4)
UPDATEbonus a
SET (a.sal, a.comm) = (SELECT b.sal, b.comm FROM emp b
WHERE b.deptno = 10);
Execution Plan
----------------------------------------------------------
0 UPDATE STATEMENT Optimizer=CHOOSE (Cost=1 Card=21 Bytes=546)
1 0 UPDATE OF 'BONUS'
2 1 TABLE ACCESS (FULL) OF 'BONUS' (Cost=1 Card=21 Bytes=546)
3 0 TABLE ACCESS (BY IX ROWID) OF 'EMP' (Cost=2 Card=4 Bytes=28)
4 3 INDEX (RANGE SCAN) OF 'EMP_IX2' (NON-UNIQUE) (Cost=1 Card=4)
FULL-TABLE-SCAN + SORT
E’ l’unica possibilità quando la colonna (o le colonne) di
ordinamento non sono indicizzate o quando ammettono
valori NULL. L’ordinamento dei dati avviene utilizzando
la clausola ORDER BY.
INDEX-RANGE-SCAN + TABLE ACCESS BY ROWID
Se le colonne di ordinamento sono indicizzate e non
ammettono valori NULL si può “pilotare” l’ordinamento
con l’uso di hint.
SELECT *
FROM dept
ORDER BY dname;
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=4 Bytes=72)
1 0 SORT (ORDER BY) (Cost=3 Card=4 Bytes=72)
2 1 TABLE ACCESS (FULL) OF 'DEPT' (Cost=1 Card=4 Bytes=72)
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=4 Bytes=72)
1 0 TABLE ACCESS (BY IX ROWID) OF 'DEPT' (Cost=2 Card=4 Bytes=72)
2 1 INDEX (FULL SCAN) OF 'DEPT_IX1' (NON-UNIQUE) (Cost=1 Card=4)