0% menganggap dokumen ini bermanfaat (0 suara)
60 tayangan23 halaman

Sistem Basisdata 9.optimasi Query

Diunggah oleh

asihlecture
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
60 tayangan23 halaman

Sistem Basisdata 9.optimasi Query

Diunggah oleh

asihlecture
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 23

Sistem Basis data

09. Optimasi Query

Asih Winantu,S.kom, M.Cs

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;

Perintah SQL di atas akan lebih efisien jika dirubah menjadi:


SELECT ANUMBER, BNUMBER, DURASI 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;

Perintah SQL di atas akan lebih efisien, jika dirubah menjadi:


SELECT ANUMBER, BNUMBER, DURASI FROM T_CALLS WHERE
SUBSTR(BNUMBER, 1, 3) = '021';

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';

Perintah SQL di atas akan lebih efisien jika dirubah menjadi:


SELECT ANUMBER, BNUMBER, DURASI FROM T_CALLS WHERE
SUBSTR(BNUMBER, 1, 3) = '021' UNION SELECT ANUMBER, BNUMBER,
DURASI FROM T_CALLS WHERE 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.

Penggunaan operator IN bentuk kedua:


SELECT ANUMBER, BNUMBER, DURASI FROM T_CALLS WHERE
SUBSTR(ANUMBER, 1, 3) IN (SELECT KODEAREA FROM T_AREACODES);
Perintah SQL di atas akan lebih efisien jika dirubah menjadi:
SELECT T1.ANUMBER, T1.BNUMBER, T1.DURASI FROM T_CALLS T1,
T_AREACODES T2 WHERE SUBSTR(T1.ANUMBER, 1, 3) = T2.KODEAREA;

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));

Perintah SQL di atas akan lebih efisien jika dirubah menjadi:


SELECT A.ANUMBER, A.BNUMBER, A.DURASI FROM T_CALLS A,
T_AREACODES B WHERE SUBSTR(A.ANUMBER, 1, 3) = B.KODEAREA;

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

 Perhatikan aturan penulisan apakah dengan huruf kapital atau huruf


lower case
 Perhatikan penggunaan bind variable

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

 Dalam PLAN_TABLE rencana eksekusi diatas dikenal dengan nama test1


yangterdefinisi pada kolom statement_id.
 Untuk melihat rencana eksekusi dari test1, digunakan perintah
SELECT berikut :

 Contoh hasil dari eksekusi query tersebut :

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

 Gunakan idxBeer untuk mendapatkan semua bir yang dibuat


oleh Pete
 Kemudian gunakan idxSells untuk mendapatkan harga dari
bir-bir tersebut, dimana bar = 'Joe''s Bar'
www.stmikelrahma.ac.id 21
Cluster tabel
 Selain Index, Cluster Table juga dapat digunakan untuk
mempercepat akses terhadap database
 Cluster Table adalah suatu segment yang menyimpan data
dari beberapa tabel yang berbeda dilokasi yang secara fisik
berdekatan.
 Bermanfaat untuk mempercepat akses data pada beberapa
tabel yang sering diquery secara bersamaan menggunakan
join

www.stmikelrahma.ac.id 22
sekian

terimakasih

www.stmikelrahma.ac.id 23

Anda mungkin juga menyukai