![]() 37
dibandingkan dengan gambar 2.23 yaitu :
WHERE TO_NUMBER
(SUBSTR(a.order_no,INSTR (b.order_no, '.')-1))
=(SUBSTR (a.order_no,INSTR (b.order_no, '.')-1))
Gambar 2. 23 Contoh where clause dengan kolom yang
ditransformasikan
Adanya
penggunaan
fungsi
SQL
dalam klausa
WHERE
dapat
membuat
komputer menggunakan sumber daya lebih banyak untuk mengolah
fungsi tersebut sehingga menyebabkan performa yang menurun karena
selain
butuh
proses
untuk
menjalankan fungsi tersebut, indeks yang
terdapat
kolom tersebut
tidak
akan
digunakan
oleh
optimizer.
Jika
ingin
tetap
menggunakan
fungsi pada kolom dalam klausa WHERE dan
indeks
tetap digunakan
maka gunakan
indeks function-based agar optimizer tetap
menggunakan indeks dalam proses eksekusi query tersebu.
-
Berhati-hatilah dengan tipe data baik secara eksplisit maupun implisit
Oracle secara
implisit
memerlukan proses lebih apabila terdapat jika
terdapat sebuah kondisi dimana terdapat perbandingan dari tipe data yang
berbeda,
dimana
Oracle
akan
langsung
mengkonversi
tipe
data
tersebut
menggunakan fungsi konversi, seperti contoh pada query gambar 2.24:
AND charcol = numexpr
Gambar 2. 24 Contoh klausa dimana terdapat implicit conversion
Sekilas
gambar
2.24
merupakan
sintaks
yang
benar
karena
gambar
2.24
menggunakan
kolom
yang
tidak
diberi
fungsi
namun
charcol
mempunyai tipe data varchar dan numexpr mempunyai tipe data
|