![]() 39
UNION
ALL
agar
indeks
dapat
digunakan
yaitu
dengan
query
seperti
pada gambar 2.27 :
SELECT /* change this half of UNION ALL if other
half changes */ info FROM tabels
WHERE...AND somecolumn BETWEEN :loval AND :hival
AND (:hival != 'ALL' AND :loval != 'ALL')
UNION
ALL SELECT
/*
Change
this
half
of
UNION
ALL if other half changes. */ info
FROM tabels
WHERE...AND (:hival = 'ALL' OR :loval = 'ALL');
Gambar 2. 27 Query yang dioptimasi dengan menggunakan union
all agar indeks dapat digunakan oleh optimizer
-
Penggunaan EXISTS dibandingkan IN untuk subquery
Gunakan
IN
jika
selective-predicate
berada
di
dalam
subquery
dan
gunakanlah
EXISTS
jika
selective-predicate
berada
di
dalam parent
karena masing-masing penggunaan IN maupun EXISTS mempunyai
keuntungannya masing-masing.
Berikut ini contoh yang mendemonstrasikan keuntungan dari IN dan
EXISTS. Kedua contoh ini menggunakan skema yang sama dengan
karakteristik seperti berikut :
Terdapat indeks yang unik di employees.employee_id
Terdapat indeks di field orders.customer_id.
Terdapat indeks di field employees.department_id.
Tabel employee mempunyai 27000 baris
Tabel order mempunyai 10000 baris
Skema HR dan OE, keduanya dianalisa dengan COMPUTE
Contoh 1 : penggunaan IN selective predicate berada di dalam subquery
|