Performansi / kecepatan operasi ke basis data ditentukan oleh :
- DBMS yang digunakan
- Arsitektur perangkat keras yang menjadi platform
- Jumlah pemakai yang terlibat
- Volume data
- Tingkat kompleksitas operasi basis data
- Cara penulisan aplikasi
Hal-hal yang perlu dipertimbangkan pada saat melaksanakan program
Memanfaatkan Indeks Primer
Sedapat mungkin memanfaatkan indeks primer / sekunder dalam setiap proses query ke basis data, contoh :
- Select …. From pegawai where idpegawai = vidpegawai
- Update pegawai set …. Where idpegawai = vidpegawai
- Delete from pegawai where idpegawai = vidpegawai
Menghindari pemakaian fungsi atau perhitungan pada perintah query, terlebih lagi untuk kriteria query. Contoh :
- Select ‘01’+left(nomhs,2) as vthn from mahasiswa where …
Diganti menjadi : Select nomhs as vnim from mahasiswa where thn_masuk = ‘01’+left(vnim,2)
- Select … from kuliah where left(kdmtk,3)=’TFD’
Diganti menjadi : Select … from kuliah where kdmtk like ‘TFD%’
Kenapa beda ? Pada arsitektur cilent-server :
- pada perintah yang asal (belum diperbaiki) maka pengerjaan pencarian data dan penerapan fungsi dilakukan diserver
- pada perintah perbaikan, karena dibuat fungsi dan perhitungan bukan merupakan bagian dari perintah query, maka server hanya akan melakukan pencarian data, sedangkan pengerjaan mengenai fungsi dilakukan di client
Pada contoh kedua, pada perintah asal tidak memanfaatkan kunci primer. Sedangkan pada perintah perbaikan menggunakan kunci indeks primer.
Operasi Join
Operasi join pada beberapa tabel dapat digunakan untuk mengefisienkan perintah dan sekaligus banyaknya data yang harus ditangani. Contoh :
Ada dua perintah :
- Select kdmtk as vkdmtk, nilai as vnilai from nilai where nomhs=vnomhs
- Select sks as vsks from kuliah where kdmtk=vkdmtk
Dapat digabungkan menjadi :
Select a.nilai as vnilai, b.sks as vsks from nilai a, kuliah b where a.nomhs=vnomhs and a.kdmtk=b.kdmtk
Melepaskan Kunci Tabel
Pada sistem multi-user dengan tingkat konkurensi tinggi (pemakai yang aktif banyak), sesegara mungkin melepaskan penguncian tabel di akhir setiap query. Karena proses dilakukan dalam dua tahap, yaitu menyimpan secara sementara di buffer memory lalu menuliskan ke dalam disk. Untuk membatalkan ada perintah rollback. Contoh :
Insert into nilai (nomhs, kdmtk) values (vnomhs, vkdmtk)
Commit -> untuk merekam ke disk
Memanfaatkan Fungsi-fungsi DBMS
Manfaatkan sebanyak mungkin fungsi-fungsi yang telah disediakan DMS ataupun development tools yang terkait dengan operasi basis data.
Select count (*) as vjumlah from mahasiswa where nomhs=vnomhs
If vjumlah=0 then
Echo “Tidak ketemu..”
Else
Select nama as vnama from mahasiswa where nomhs=vnomhs
Endif
Akan lebih baik, jika diganti menjadi :
Select nama as vnama from mahasiswa where nomhs=vnomhs
Inquire_sql (jumlah=rowcount)
If vjumlah=0 then
Echo “Tidak ketemu…”
Else
Echo “Nama : “;&vnama
Endif
Menempatkan Perintah yang Tidak Relevan di Luar Perulangan
Jika ada perintah perulangan (looping) dengan penelusuran seluruh basis data pada sebuah tabel, sebisa mungkin menempatkan berbagai perintah yang tidak relevan di luar perulangan. Contoh :
Algoritma tersebut dapat diperbaiki menjadi :