![]() 43
lagi
berkorelasi
karena
penggunaan
IN
menggantikan join.
Note 5 and 6 Menunjukkan selective-query.
Tabel 2. 3 Execution plan dari pengunaan IN
ID
OPERATION
OPTIONS
OBJECT_NAME
OPT
COST
0
SELECT STATEMENT
CHO
1
NESTED LOOPS
125
2
VIEW
116
3
SORT
UNIQUE
116
4
TABEL ACCESS
FULL
ORDERS
ANA
40
5
TABEL ACCESS
BY
INDEXROWID
EMPLOYEES
ANA
1
6
INDEX
UNIQUE SCAN
EMP_EMP_ID_PK
ANA
Tabel
2.3
menunjukkan
execution plan
(dari
V$SQL_PLAN)
untuk
perintah pada
gambar 2.30. Proses
ini akan
membuat optimizer
membuat
sebuah
view yang
berisi
banyak
employee_id
karena
tidak
adanya
selective-predicate dan kemudian akan dibandingkan dengan tabel
employees melalui indeks yang unik.
Gambar 2.31 menunjukan contoh query yang menggunakan EXISTS :
SELECT e.employee_id, e.first_name, e.last_name,
e.salary
FROM employees e
WHERE e.department_id = 80
/*Note 5*/
AND e.job_id = 'SA_REP'
/*Note 6*/
AND EXISTS
(SELECT 1 /*Note 1*/
FROM orders o
WHERE e.employee_id =o.sales_rep_id); /*Note 2*/
Gambar 2. 31 Query dengan pengunaan EXISTS
|