Cara mengoptimalkan perintah SQL tidak cukup dengan mendesain
aplikasinya saja. Dalam mendesain database, seringkali lokasi fisik di nomor
duakan. Terlebih hanya fokus terhadap desain logik saja. Padahal untuk menampilkan
hasil query dibutuhkan pencarian yang melibatkan struktur fisik penyimpanan
data. Intinya dalam mengoptimalkan query adalah dengan meminimalkan “jalur”
pencarian untuk menemukan data yang disimpan dalam lokasi fisik.
Penggunaan index yang tidak tepat untuk kerja, tidak
akan meningkatkan kecepatan akses data. Hal tersebut dikarenakan index pada
database digunakan untuk meningkatkan kecepatan akses data. Cara kerjanya, pada
saat query dijalankan, index mencari data dan menentukan nilai ROWID yang
membantu menemukan lokasi data secara fisik di disk.
Misal digunakan index yang melibatkan tiga buah
kolom yang mengurutkan kolom menurut kota, provinsi, dan kode pos dari tabel
karyawan, sebagai berikut :
Pada saat melakukan query tersebut, index tidak akan
digunakan karena kolom pertama (kota) tidak digunakan dalam klausa WHERE. Jika user
sering melakukan query ini, maka kolom index harus diurutkan menurut provinsi. Selain
itu, proses pencarian data akan lebih cepat jika data terletak pada block tabel
yang berdekatan daripada harus mencari dibeberapa data file yang terletak pada
block yang berbeda.
Misal pada perintah SQL
berikut ini :
Query di atas akan melakukan
“scan” terhadap sedikit data block jika tabel karyawan diatas diurutkan
berdasarkan kolom id. Untuk mengurutkan berdasarkan kolom yang berbeda-beda maka
tabel disimpan dalam flat file, kemudian tabel diekspor dan diurutkan sesuai
kebutuhan.
Alternatif yang lain,
bisa digunakan perintah untuk membuat tabel lain yang memiliki urutan yang
berbeda dari tabel asal, seperti perintah SQL berikut :
Pada SQl diatas, tabel karyawan_urut berisi data
yang sama dengan tabel karyawan hanya datanya terurut berdasarkan kolom id.
Tidak ada komentar:
Posting Komentar