Mari temen-temen kita bahas Optimasi Perintas Sql, Langsung aja gak sah basa-basi langsung ke topik permasalahan yang akan kita banhas Optimasi Perintah SQL. 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 :
CREATE INDEX idx_kota_prov_kodepos
ON karyawan(kota,provinsi,kode_pos)
TABLESPACE INDX;
Kemudian user melakukan query
sebagai berikut :
SELECT *FROM karyawan WHERE
provinsi=’Jawa Barat’;
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
:
SELECT *FROM karyawan
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 :
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.
Tidak ada komentar:
Posting Komentar