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.
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.
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
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.
Nama digunakan sebagai identitas, yaitu identitas bagi objek pada DBMS. Misal : tabel, kolom dan pengguna.
Tipe data
Tipe data yang ada dalam MYSQL :
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
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
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
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
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
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;
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;
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
weeeewww.. nice post gan.. jgn lpa kunjungan ke kampung halaman ane http://nurhidayat-share.blogspot.com/ :))
ReplyDelete