-->

Optimasi pada Perintah SQL

Desain aplikasi saja tidak cukup untuk meningkatkan unjuk kerja sebuah aplikasi, maka setiap aplikasi tentunya harus didukung dengan optimasi dari database dengan perintah SQL yang digunakan pada aplikasi tersebut. Dalam mendesain database, seringkali lokasi fisik data tidak menjadi perhatian penting karena hanya desain logik saja yang diperhatikan. Padahal untuk menampilkan hasil query dibutuhkan pencarian yang melibatkan struktur fisik penyimpanan data. Inti dari optimasi query adalah meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi fisik.


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 kota, propinsi dan kode pos dari tabel karyawan, sebagai berikut:

CREATE INDEX idx_kota_prop_kodepos
ON karyawan(kota, propinsi, kode_pos)
TABLESPACE INDX;

Kemudian user melakukan query sebagai berikut:
SELECT * FROM karyawan WHERE propinsi=’Jawa Barat’;
Pada saat melakukan query ini, 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 propinsi. Selain itu, proses pencarian data akan lebih cepat jika data terletak pada blok tabel yang berdekatan daripada harus mencari di beberapa datafile yang terletak pada blok yang berbeda.
Misal pada perintah SQL berikut ini :

SELECT * FROM karyawan
WHERE id BETWEEN 1010 AND 2010;

Query ini akan melakukan “scan” terhadap sedikit blok data 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 :

CREATE TABLE karyawan_urut
AS SELECT * FROM karyawan
ORDER BY id;

Pada SQL diatas, tabel karyawan_urut berisi data yang sama dengan tabel karyawan hanya datanya terurut berdasarkan kolom id.

Dalam sebuah jurnal tentang optimasi dengan memanfaatkan histogram  menggunakan dari distribusi data yang ada dibangun sebuah histogram yang berisikan frekuensi munculnya data tertentu dan dikelompokkan (buckets). Jika data tersebut bersifat numerik maka pengelompokan dapat dengan mudah ditentukan melalui sebuah batasan. Jika data tersebut bersifat kategori maka dapat dikelompokkan berdasarkan urutan hurufnya. Selanjutnya, dilakukan eksekusi query beberapa sampel. Eksekusi sampel ini mengkonsumsi sejumlah kecil dari sumber daya yang tersedia. Dari hasil query tersebut, akan diperkirakan frekuensi untuk histogram.

0 Response to "Optimasi pada Perintah SQL"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel