Optimasi Query
A. Optimasi pada Perintah SQL
Index pada database digunakan
untuk meningkatkan kecepatan akses data. Pada saat query dijalankan, index
mencari data dan menentukan nilai ROWID yang membantu menemukan lokasi data
secara fisik di disk. Akan tetapi penggunaan index yang tidak tepat, tidak akan
meningkatkan unjuk kerja dalam hal ini kecepatan akses data.
Misal digunakan index yang
melibatkan tiga buah kolom yang mengurutkan kolom menurut nama, fakultas dan
NIM dari tabel mahasiswa, sebagai berikut :
CREATE INDEX
idx_nama_fakultas_nim ON mahasiswa(nama, fakultas, nim) TABLESPACE INDX;
Kemudian user melakukan query sebagai berikut :
SELECT * FROM
mahasiswa WHERE fakultas=’teknik’;
Pada saat melakukan query ini,
index tidak akan digunakan karena kolom pertama (nama) tidak digunakan dalam
klausa WHERE. Jika user sering melakukan query ini, maka kolom index harus
diurutkan menurut fakultas.
SELECT * FROM mahasiswa
WHERE nim BETWEEN 5302412345 AND 5302411090;
Query ini akan melakukan “scan”
terhadap sedikit data block jika tabel mahasiswa diatas diurutkan berdasarkan
kolom nim.
Alternatif yang lain, bisa
digunakan perintah untuk membuat tabel lain yang memiliki urutan yang berbeda
dari tabel asal, seperti perintah SQL berikut :
CREATE TABLE
mahasiswa_urut AS SELECT * FROM mahasiswa ORDER BY nim;
Pada SQL diatas, tabel mahasiswa_urut
berisi data yang sama dengan tabel mahasiswa hanya datanya terurut berdasarkan
kolom nim.
B. Faktor Lain yang
Berpengaruh Terhadap Kecepatan Akses Data
1. Optimasi Aplikasi
Dalam pembuatan aplikasi, yang
perlu mendapat perhatian adalah apakah akses terhadap data sudah efisien.
Efisien dalam hal penggunaan obyek yang mendukung kecepatan akses, seperti
index atau cluster. Kemudian juga bagaimana cara database didesain.
Apakah desain database sudah
melakukan normalisasi data secara tepat. Kadangkala normalisasi sampai level
yang kesekian, tidak menjamin suatu desain yang efisien. Untuk membuat desain
yang lebih tepat, kadang setelah melakukan normalisasi perlu dilakukan
denormalisasi. Misalnya tabel yang hubungannya one-toone dan sering diakses
bersama lebih baik disatukan dalam satu tabel.
2. Cluster dan Index
Cluster adalah suatu segment yang
menyimpan data dari tabel yang berbeda dalam suatu struktur fisik disk yang
berdekatan. Konfigurasi ini bermanfaat untuk akses data dari beberapa tabel
yang sering di-query. Penggunaan cluster secara tepat dilaksanakan setelah
menganalisa tabel-tabel mana saja yang sering di-query secara bersamaan
menggunaan perintah SQL join.
Jika aplikasi sering melakukan
query dengan menggunakan suatu kolom yang berada pada klausa WHERE, maka harus
digunakan index yang melibatkan kolom tersebut. Penggunaan index yang tepat
bergantung pada jenis nilai yang terdapat dalam kolom yang akan diindex. Dalam
RDBMS Oracle, index B-Tree digunakan untuk kolom yang mengandung nilai yang cukup
bervariasi, sedangkan untuk nilai yang tidak memiliki variasi cukup banyak,
lebih baik menggunakan index bitmap.
Tidak ada komentar:
Posting Komentar