Home Start Back Next End
  
38
numeric. 
Dalam 
hal 
ini, 
Oracle 
secara 
implisit 
akan 
mengubah
query gambar 2.24
menjadi seperti query gambar 2.25:
AND TO_NUMBER (charcol) = numexpr
Gambar 2. 25  Implisit conversion yang dilakukan oleh Oracle
Hal
ini
tentu
saja
dapat
membuat
indeks
tidak
digunakan
oleh optimizer
dan membutuhkan proses lebih untuk menjalankan fungsi konversi
tersebut.
-
Jangan membuat SQL layaknya bahasa prosedural
SQL bukanlah bahasa prosedural, jika sebuah SQL dibuat untuk berbagai
tugas  maka  hasilnya  akan  kurang  optimal  untuk  tugas  tertentu.  Oleh
karena
itu,
lebih
baik
gunakanlah banyak
perintah
untuk
setiap
fungsi
dibandingkan dengan sebuah perintah untuk banyak fungsi. Untuk query
yang
cukup
kompleks,
dapat
menggunakan perintah yang kompleks
menjadi lebih sederhana, seperti pada contoh query gambar 2.26:
SELECT info FROM tabels
WHERE ... AND somecolumn BETWEEN
DECODE (:loval, 'ALL', somecolumn, :loval)
AND DECODE (:hival, 'ALL', somecolumn, :hival);
Gambar 2. 26  Query yang kompleks dan menyebabkan
indeks tidak terbaca
Indeks
pada
kolom
somecolumn
tidak
akan
digunakan
oleh
Optimizer
pada query gambar 2.26 karena ekspresi
tersebut
menggunakan
kolom
yang
sama
di
kedua
sisi
BETWEEN. Jika
ingin
indeks
dapat
digunakan
oleh
Optimizer
maka
query
tersebut
dapat
diganti
dengan
menggunakan
Word to PDF Converter | Word to HTML Converter