Optimasi Query
Optimasi
perintah SQL
Untuk
mengingkatkan unjuk kerja harus didukung desain aplikasi dan dengan optimasi
dari perintah SQL dari aplikasi tersebut. Optimasi query dilakukan dengan
meminimalkan jalur pencarian untuk menemukan data yang disimpan di dalam lokasi
fisik.
Pada database yang digunakan index secara tepat untuk
meningkatkan kecepatan akses data. Saat dilakukan query, index bertugas mencari
data dan menentukan nilai ROWID agar dapat menemukan lokasi data secara fisik.
Contoh : pertama membuat index yang melibatkan tiga buah
kolom yang mengurutkan kolom menurut prodi, jurusan dan fakultas dari tabel
Mahasiswa dengan sintak sebagai berikut :
CREATE INDEX idx_prodi_jurusan_fakultas ON Mahasiswa(prodi,
jurusan, fakultas) TABLESPACE INDX;
Setelah itu dilakukan query sebagai berikut :
SELECT * FROM Mahasiswa WHERE jurusan=’Teknik Informatika’;
Pada query tersebut tidak digunakan index karena kolom
pertama (prodi) tidak digunakan pada klause WHERE. Jika yang sering dilakukan
query ini, seharusnya kolom index harus diurutkan menurut jurusan. Proses
pencarian data juga akan lebih cepat apabila data terletak pada block tabel
yang berdekatan daripada harus mencari di beberapa datafile pada block yang
berbeda.
Informasi Jalur Akses Query
SQL pertama kali digunakan pada sebuah proyek riset
laboratorium riset San Jose, IBM.
Dan pada saat ini SQL telah banyak digunakan pada berbagai
platform, baik dari mikrokomputer maupun mainframe. SQL dapat diletakkan pada
bahasa pemrogrman/mesin yaitu C dan Delphi ataupun digunakan secara
mandiri/berdiri sendiri. Saat ini SQL telah menjadi bagian dari sejumlah DBMS,
antara lain : Sybase, MySQL, Oracle, dan Informix.
Elemen dari SQL yang paling dasar antara lain pernyataan,
nama, tipe data, ekspresi, konstanta dan fungsi bawaan.
Pernyataan
Perintah dari SQL yang digunakan untuk meminta sebuah
tindakan kepada DBMS.
Pernyataan dasar SQL antara lain :
1. ALTER : Merubah struktur tabel
2. COMMIT : Mengakhiri eksekusi transaksi
3. CREATE : Membuat tabel, indeks
4. DELETE : Menghapus baris pada sebuah tabel
5. DROP : Menghapus tabel, indeks
6. GRANT : Menugaskan hak terhadap basis data kepada user
7. INSERT : Menambah baris pada tabel
8. REVOKE : Membatalkan hak kepada basis data
9. ROLLBACK : Mengembalikan pada keadaan semula apabila
transaksi gagal
dilaksanakan
10. SELECT : Memilih baris dan kolom pada sebuah tabel
11. UPDATE : Mengubah value pada baris sebuah tabel
Nama
Nama digunakan sebagai identitas, yaitu identitas bagi objek
pada DBMS. Misal : tabel, kolom dan pengguna.
Tipe data
Tipe data yang ada dalam MYSQL :
A. Tipe data numerik antara lain :
1. TINYINT : Nilai integer yang sangat kecil
2. SMALLINT : Nilai integer yang kecil
3. MEDIUMINT : Nilai integer yang sedang
4. INT : Nilai integer dengan nilai standar
5. BEGINT : Nilai integer dengan nilai besar
6. FLOAT :Bilangan decimal dengan single-precission
7. DOUBLE :Bilangan decimal dengan double-precission
8. DECIMAL(M,D) : Bilangan float yang dinyatakan sebagai
string. M : jumlah
digit yang
disimpan, D : jumlah angka dibelakang koma
B. Tipe data String antara lain :
1. CHAR : Karakter yang memiliki panjang tetap yaitu
sebanyak n
2. VARCHAR : Karakter yang memiliki panjang tidak tetap
yaitu maksimum n
3. TINYBLOB : BLOB dengan ukuran sangat kecil
4. BLOB : BLOB yang memiliki ukuran kecil
5. MEDIUMBLOB : BLOB yang memiliki ukuran sedang
6. LONGBLOB : BLOB yang memiliki ukuran besar
7. TINYTEXT : teks dengan ukuran sangat kecil
8. TEXT : teks yang memiliki ukuran kecil
9. MEDIUMTEXT : teks yang memiliki ukuran sedang
10. LONGTEXT : teks yang memiliki ukuran besar
11. ENUM : kolom diisi dengan satu member enumerasi
12. SET : Kolom dapat diisi dengan beberapa nilai anggota
himpunan
C. Tipe data tunggal dan jam :
1. DATE : date memiliki format tahun-bulan-tanggal
2. TIME : time memiliki format jam-menit-detik
3. DATETIME : gabungan dari format date dan time
Ekspresi
Ekspresi digunakan untuk menghasilkan/menghitung nilai.
Misalnya : jumlah=harga-diskon
Ekspresi aritmatika antara lain :
1. + : tambah
2. – : kurang
3. / : bagi
4. * : kali
Fungsi bawaan
Fungsi adalah subprogram yang dapat menghasilkan suatu nilai
apabila fungsi tersebut dipanggil. Fungsi Agregat adalah fungsi yang digunakan
untuk melakukan summary, statistik yang dilakukan pada suatu tabel/query.
1. AVG(ekspresi) : digunakan untuk mencari nilai rata-rata
dalam kolom dari tabel.
2. COUNT(x) : digunakan untuk menghitung jumlah baris dari
sebuah kolom
dari tabel
3. MAX(ekspresi) : digunakan untuk mencari nilai yang paling
besar dari suatu
kolom dari tabel
4. MIN(ekspresi) : digunakan untuk mencari nilai yang paling
kecil dari suatu
kolom dari tabel
5. SUM(ekspresi) : digunakan untuk mengitung jumlah
keseluruhan dari suatu
kolom dari tabel
Pernyataan SQL dapat dikelompokan menjadi 3 kelompok, yaitu
: DDL, DML dan DCL.
A. Pernyataan SQL kelompok DDL (Data Defination Language)
1. Membuat
Database
Syntax yang
digunakan : CREATE DATABASE namadatabase;
2. Menghapus
Database
Syntax yang
digunakan : DROP DATABASE namadatabase;
3. Membuat Tabel
Syntax yang
digunakan : CREATE TABLE namatabel;
4. Menghapus
Database
Syntax yang
digunakan : DROP DATABASE namadatabase;
5. Menghapus Tabel
Syntax yang
digunakan : DROP TABEL namatabel;
6. Mendefinisikan
null/not null
Syntax yang
digunakan : CREATE TABLE namatabel
( Field1
TipeData1 NOT NULL,
Field2
TipeData2);
7. Mendefinisikan
Nilai Default
Syntax yang
digunakan : CREATE TABLE namatabel
( Field1
TipeData1,
Field2 TipeData2
DEFAULT nilai);
8. Mendefinisikan
Primary Key pada Tabel
Dapat dilakukan
dengan 3 Syntax :
1) CREATE TABLE
namatabel
( Field1
TipeData1 NOT NULL PRIMARY KEY,
Field2
TipeData2);
2) CREATE TABLE
namatabel
( Field1
TipeData1,
Field2
TipeData2,
PRIMARY
KEY(Field1)
);
3) ALTER TABEL
namatabel ADD CONSTRAINT namaconstraint PRIMARY KEY (NAMAKOLOM)
9. Menghapus Primary
Key pada Tabel
Syntax yang
digunakan ada 2 :
1) ALTER TABLE
namatabel DROP CONSTRAINT NAMACONSTRAINT;
2) ALTER TABLE
NAMATABEL DROP PRIMARY KEY;
10. Menambah Kolom
Baru pada Tabel
Syntax yang
digunakan : ALTER TABEL NAMATABEL ADD newfield tipe;
11. Mengubah Tipe
Data atau Lebar Kolom pada Tabel
Syntax yang
digunakan : ALTER TABEL namatabel MODIFY COLUMN field tipe;
12. Mengubah Nama
Kolom
Syntax yang
digunakan : ALTER TABEL namatabel CHANGE COLUMN namakolomlama
namakolombaru tipe;
13. Menghapus Kolom
pada Tabel
Syntax yang
digunakan : ALTER TABEL namatabel DROP COLUMN namakolom;
14. Mendefinisikan
Foreign Key pada Tabel
Dapat dilakukan
dengan 2 Syntax :
1) CREATE TABLE
namatabel
( Field1
TipeData1,
Field2
TipeData2,
FOREIGN KEY
(Field2) REFERENCES namatabelinduk
(namakolominduk) ON UPDATE CASCADE ON DELETE NO ACTION)
2) ALTER TABEL
namatabel ADD CONSTRAINT namaconstraint FOREIGN KEY (namakolom) REFERENCES
namatabelinduk (namakolominduk) ON UPDATE CASCADE ON DELETE NO ACTION;
15. Menghapus Foreign
Key
Syntak yang
digunakan : ALTER TABEL namatabel DROP FOREIGN KEY namaconstraint;
B. DML (Data Manipulation Language)
1. INSERT
menambah baris
pada tabel. Syntax yang paling sering digunakan : INSERT INTO namatabel
VALUES (nilai1, nilai2,
nilai-n);
2. DELETE
Menghapus baris
pada tabel. Syntax : DELETE FROM namatabel [where kondisi];
3. UPDATE
Mengubah isi
beberapa kolom pada tabel. Syntax : UPDATE namatabel SET kolom1=nilai1, kolom2=nilai2
[where kondisi];
4. SELECT
Menampilkan isi
dari suatu tabel yang bisa dihubungkan dengan tabel yang lainnya;
Faktor-faktor yang berpengaruh terhadap kecepatan Akses Data
- 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.
- 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.