Sistem Basisdata 9.optimasi Query
Sistem Basisdata 9.optimasi Query
www.stmikelrahma.ac.id 1
Outline materi
Pengertian optimasi query
Teknik Optimasi Perintah SQL
Informasi Jalur Akses Query
Faktor-faktor yang berpengaruh terhadap
kecepatan akses data
www.stmikelrahma.ac.id 2
Pendahuluan
Data yang tersimpan dalam database semakin lama akan semakin
besar ukuran atau volumenya.
Kalau tidak didukung dengan kecepatan akses yang memadai maka
akan semakin menurun unjuk kerjanya.
Ukuran unjuk kerja dalam hal ini kecepatan akses data dipengaruhi
oleh banyak faktor.
Pada bab ini akan membahas tentang optimasi query serta faktor-
faktor lain yang berpengaruh terhadap optimalisasi kecepatan akses
data.
www.stmikelrahma.ac.id 3
Pengertian optimasi query
Di dalam optimizer, statement-statement yang ada diproses dengan
salah satu cara dari banyak cara yang ada untuk mendapatkan
perencanaan query yang paling optimal sehingga pada akhirnya
akan didapatkan jawaban querydengan waktu akses yang paling
minimum.
Proses untuk mencari perencanaan eksekusi query yang terbaik
inilah yang disebut dengan proses optimisasi query.
Inti dari optimasi query adalah meminimalkan “jalur” pencarian untuk
menemukan data yang disimpan dalam lokasi fisik
www.stmikelrahma.ac.id 4
Teknik optimasi perintah SQL
Optimasi perintah SQL dapat di lakukan dengan cara memperbaiki
Pernyataan SELECT :
1. Hindari Penggunaan SELECT *
2. Gunakan Kriteria
3. Hindari OR, gunakan UNION
4. Hindari NOT
5. Hindari Ekspresi Matematika di Sisi Kiri Operand
6. Hindari Operator IN
7. Hindari Operator EXIST
8. Hindari Operator LIKE
9. Urutan Nama Kolom
10. Gunakan Konsensus Penulisan SQL
www.stmikelrahma.ac.id 5
1. Hindari Penggunaan SELECT *
Fokuslah hanya pada kolom yang memang benar-benar dibutuhkan.
Misalkan diasumsikan bahwa tabel T_CALLS memiliki kolom
(ANUMBER, BNUMBER, TGLJAM, DURASI, TRIN, TROUT), maka
jika diinginkan informasi panggilan dari A ke B dan durasinya maka
dapat dilakukan dengan perintah sebagai berikut:
SELECT * FROM T_CALLS;
www.stmikelrahma.ac.id 6
2. Gunakan Kriteria
Hindari pengaksesan seluruh data, tetapi fokuslah pada kriteria data
yang diperlukan sesuai kebutuhan. Contoh apabila dibutuhkan
informasi ke Jakarta maka:
SELECT ANUMBER, BNUMBER, DURASI FROM T_CALLS;
www.stmikelrahma.ac.id 7
3. Hindari OR, gunakan UNION
Operator OR membutuhkan waktu yang banyak. Bila
memungkinkan, gunakan operator UNION yang setara.
SELECT ANUMBER, BNUMBER, DURASI FROM T_CALLS WHERE
SUBSTR(BNUMBER, 1, 3) = '021' OR SUBSTR(BNUMBER, 1, 3) = '022';
www.stmikelrahma.ac.id 8
4. Hindari NOT
Hindari operator NOT dan ganti dengan operator perbandingan bila
memungkinkan:
SELECT ANUMBER, BNUMBER, DURASI FROM T_CALLS
WHERE NOT (DURASI > 100);
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
SELECT ANUMBER, BNUMBER, DURASI FROM T_CALLS
WHERE (DURASI <= 100);
www.stmikelrahma.ac.id 9
5. Hindari Ekspresi Matematika di Sisi Kiri Operand
Bila kriteria pencarian memerlukan ekspresi matematika, maka
posisikan ekspresi tersebut pada sebelah kanan operator jika
memungkinkan.
SELECT ANUMBER, BNUMBER, DURASI FROM T_CALLS
WHERE (DURASI + 40 > 100);
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
SELECT ANUMBER, BNUMBER, DURASI FROM T_CALLS
WHERE (DURASI > 60);
www.stmikelrahma.ac.id 10
6. Hindari Operator IN
Penggunaan operator IN dalam kriteria pencarian merupakan pernyataan
SELECT yang mahal, sehingga perlu dihindari. Berikut cara
menghindarinya untuk dua bentuk penggunaan IN.
Penggunaan operator IN bentuk pertama:
SELECT ANUMBER, BNUMBER, DURASI FROM T_CALLS WHERE
SUBSTR(ANUMBER, 1, 3) IN ('021', '022');
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
SELECT ANUMBER, BNUMBER, DURASI FROM T_CALLS WHERE
SUBSTR(ANUMBER, 1, 3) = '021' OR SUBSTR(ANUMBER, 1, 3) = '022';
Untuk selanjutnya, perhatikan paragraf 3.3 untuk mengindari penggunaan
operator OR.
www.stmikelrahma.ac.id 11
7. Hindari Operator EXIST
Sama halnya dengan EXIST, bila memungkinkan hindari
penggunaan operator ini.
SELECT A.ANUMBER, A.BNUMBER, A.DURASI FROM T_CALLS A WHERE
EXIST (SELECT B.KODEAREA FROM T_AREACODES B WHERE
B.KODEAREA = SUBSTR(A.ANUMBER, 1, 3));
www.stmikelrahma.ac.id 12
8. Hindari Operator LIKE
Penggunaan operator LIKE akan menyebabkan full table scanning.
Oleh karena itu, perlu dirubah dengan ekspresi yang sama bila
memungkinkan.
SELECT ANUMBER, BNUMBER, DURASI FROM T_CALLS
WHERE ANUMBER LIKE '021%';
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
SELECT ANUMBER, BNUMBER, DURASI FROM T_CALLS
WHERE ANUMBER >= '021' AND ANUMBER < '022';
www.stmikelrahma.ac.id 13
9. Urutan Nama Kolom
Penulisan nama kolom disarankan menggunakan urutan sebagaimana
kolom tersebut didefinisikan di dalam tabel. Misalkan tabel berikut
mempunyai kolom dengan urutan sebagaimana tertulis: T1(K1, K2, K3, K4,
K5) di mana terdapat composite index untuk kolom K4 dan K5;
SELECT K2, K5, K3 FROM T1;
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
SELECT K2, K3, K5 FROM T1;
Pada penggunaan index dari beberapa kolom (composite index) sebutkan
nama kolomnya dalam urutan yang benar sesuai dengan urutan kolom
tersebut di dalam tabelnya.
SELECT K2, K3, K5 FROM T1 WHERE K5 > 50 AND K4 = '0215215522';
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
SELECT K2, K3, K5 FROM T1 WHERE K4 = '0215215522' AND K5 > 50;
www.stmikelrahma.ac.id 14
10. Gunakan konsensus penulisan SQL
www.stmikelrahma.ac.id 15
Informasi jalur akses query
Informasi tentang jalur akses yang digunakan oleh database untuk
melaksanakan query dalam database Oracle dapat dengan
menggunakan perintah explain plan yang akan memberi informasi
tentang rencana eksekusi dari suatu query. Informasi ini disimpan
dalam tabel PLAN_TABLE yang terdapat di schema user yang
mengeksekusi perintah tersebut.
Sebelum melakukan perintah explain plan, terlebih dahulu buat
table PLAN_TABLE dengan menggunakan script utlxplan.sql yang
diambil dari \%ORACLE_HOME%\RDBMS\ADMIN.
www.stmikelrahma.ac.id 16
setelah itu table PLAN_TABLE dapat digunakan seperti contoh
berikut
www.stmikelrahma.ac.id 17
Faktor-faktor yang berpengaruh terhadap
kecepatan akses data
Optimasi aplikasi
Dalam pembuatan aplikasi, yang perlu mendapat perhatian adalah :
o efisiensi penggunaan obyek yang mendukung kecepatan akses seperti
index atau cluster
o Apakah desain database sudah melakukan normalisasi data secara
tepat.
Cluster & index
Cluster adalah suatu segment yang menyimpan data dari tabel yang
berbeda dalam suatu struktur fisik disk yang berdekatan.
Penggunaan Index pada database secara tepat, dapat digunakan
untuk meningkatkan kecepatan akses data.
www.stmikelrahma.ac.id 18
Index table
Index = sebuah struktur data yang digunakan untuk
mempercepat akses terhadap tuple-tuple (rows) dari suatu
relation (table), yang berisi nilai dari satu atribut atau lebih.
Dapat berupa sebuah tabel hash. Tetapi didalam DBMS, index
seringkali berupa sebuah balanced search tree dengan nodenode
dalam jumlah sangat besar yang disebut B-tree.
Ukuran dari index jauh lebih kecil daripada ukuran tabel dasarnya
www.stmikelrahma.ac.id 19
Index tabel
Membuat index:
create index <index-name> on <relation-name> (<attribute-list>)
Contoh: create index b-index on branch(branch_name)
Gunakan create unique index untuk menspesifikasikan secara
tidak langsung kondisi dimana kata kuncinya adalah candidate key.
Untuk menghapus index:
drop index <index-name>
Berikut pedoman untuk pemilihan kolom yang perlu dibuatkan index:
1. Index unik pada kolom kunci utama (primary key)
2. Index pada kolom kunci asing (foreign key)
3. Index pada kolom yang digunakan sebagai kriteria pemilihan
4. Index pada kolom yang digunakan untuk pengurutan (order by)
5. Index pada kolom yang digunakan untuk pengelompokan (group
by)
www.stmikelrahma.ac.id 20
Penggunaan index
Misalkan kita mencari nilai 'v', Index akan membawa kita
hanya pada tuple-tuple yang mempunyai 'v' didalam atribut
yang diindex.
Contoh: gunakan idxBeer dan idxSell untuk mencari harga bir
yang diproduksi oleh Pete dan dijual oleh Joe
www.stmikelrahma.ac.id 22
sekian
terimakasih
www.stmikelrahma.ac.id 23