Optimasi Query
Komponen Query 
Processing 
 Bahasa yang digunakan 
 SQL : “ Intergrasi bahasa data” 
 Metodelogi Eksekusi Query 
 Langkah – langkah yang digunakan 
untuk mengeksekusi dalam gueri yang 
diinginkan oleh user 
 Optimasi Query 
 Bagaimana mengetahui rencana 
eksekusi yang “baik”
Tabel yang ada 
Pelanggan Daya terpasang 
harga
Memilih Alternatif 
SELECT nmpel 
FROM pelanggan,daya_terpasang 
WHERE pelanggan.idpel = daya_terpasang.idpel 
AND daya > 1300 
Strategi 1 
Π nmpel(σdaya >1300 Λ pelanggan.idpel=daya_terpasang.idpel(pelanggan X daya_terpasang)) 
Strategi 2 
Πnmpel(pelanggan idpel (σdaya>1300 (daya_terpasang))
Objek Optimasi Queri 
Minimal Biaya 
I/O Cost + CPU Cost + Communication Cost 
Wide Area Networks 
Biaya komunikasi akan mendominasi 
1. Bandwidth Rendah 
2. Kecepatan rendah 
Local Area Networks 
Biaya komunikasi tidak mendomionasi
Kompleksitas Operasi Relasional
Lapisan Pada Query Processing 
Query Decomposition 
Data Localization 
Global Optimazation 
Local Optimazation 
Global 
Schema 
Fragment 
Schema 
Stats On 
Fragments 
Local 
Schema 
Control 
Site 
Local 
Sites
Query Decomposition 
 Pada Lapis Pertama ini input adalah 
query dirubah menjadi Aljabar query. 
 Query Decomposition dibagi menjadi 
4 bagian :Normalisasi, analisa 
semantik, memperbaiki Query, 
menata ulang struktur dari queri 
(restruktured)
Data Localization 
 Hasil dari lapis pertama akan dibuat 
dalam bentuk fragment. 
 Secara Umum membuat fragment 
guery ada 2 langkah :Distribusi query 
dipetakan dalam fragment query, 
menyederhanakan fragment query.
Global Optimazation 
 Tujuan dari optimasi query adalah 
mencari strategi untuk mengeksekusi 
query. 
 Strategi eksekusi untuk query 
terdistribusi tergantung dari aljabar 
relasional dan cara berkomunikasi ( 
mengirim/menerima)
Local Optimization 
 Pada lapisan ini , query terbaik sudah 
terpilih, dan setiap sub query berada 
di satu site.
Dekomposisi Query 
 Normalisasi 
 Manipulasi Queri 
 Analisa 
 Mendeteksi queri yang salah 
 Sederhanakan 
 Mengeleminasi predicate yang berulang 
 Tata Ulang 
 Gunakan aturan transformasi
Normalisasi 
 Aturan untuk operasi logika 
1. p1  p2 <=> p2 ^ p1 
2. p1 V p2 <=> p2 V p1 
3. p1 ^ ( p2 ^p3)  (p1 ^ p2) ^p3 
4. p1 V (p2 Vp3) ( p1 V p2) Vp3 
5. p1 ^ (p2 Vp3)(p1 ^ p2) V (p1 ^ p3) 
6. p1 V (p2 ^ p3)  (p1 V p2) ^ (p1 V p3) 
7.  ( p1 ^ p2) p1 V p2 
8.  ( p1 V p2)  p1 ^ p2 
9. (p)  p
Contoh 1 
Select nmpel 
From pelanggan p , daya_terpasang d 
Where (p.idpel = d.idpel And ap = 'lenteng agung‘ 
And daya = 1300 ) 
or 
( p.idpel = d.idpel And ap = 'lenteng agung' 
And daya = 900 ) 
Mencari nama pelanggan dengan ap ‘lenteng agung ‘ dengan daya 1300 
atau 900 watt 
SQL : 
Select nmpel 
From pelanggan p , daya_terpasang d 
Where p.idpel = d.idpel 
And ap = “lenteng agung” 
And (daya = 1300 Or daya = 900) 
Normalisasi : 
p.idpel = d.idpel  ap=“lenteng agung”  (daya = 1300 V Daya =900) 
atau 
(p.idpel = d.idpel  ap=“lenteng agung”  Daya = 1300) 
V 
(p.idpel = d.idpel  ap=“lenteng agung”  Daya = 900)
Analisa 
Menemukan queri yang salah 
Tipe yang tidak benar 
1. Jika ada atribut atau nama relasi 
tidak didefenisi dalam skema global 
2. Ada operasi yang diaplikasikan ke 
atribut dengan tipe yang salah
Contoh 2 
Select alamat 
From pelanggan 
Where ap > 1900 
Queri tidak benar : 
Atribut alamat tidak dideklarasikan dalam 
struktur tabel 
Operator > 1900 tidak compatible dengan type text dari ap
Kesalahan Semantik 
1. Ada komponen yang tidak 
memberikan konstribusi dalam hasil 
akhir 
2. Hanya sebagian dari relational 
queris yang dapat di tes untuk 
koreksi 
3. Untuk mendektesi : query graph dan 
Join Graph
Contoh 3: 
Cari nama pelanggan dan daya dengan tarif kurang dari 1100 
SELECT nmpel, daya 
FROM pelanggan p, daya_terpasang 
d, harga h 
WHERE p.idpel = d.idpel 
AND d.gol = h.gol 
AND ap = “lenteng agung" 
AND tarif <100
Query Graph 
pel 
daya 
harga 
FROM FROM pelanggan p, daya_terpasang d, harga h 
WHERE p.idpel = d.idpel 
AND d.gol = h.gol 
AND ap = “lenteng agung" 
Tarif <100 
AND tarif <100 
ap = “lenteng agung" 
hasil 
SELECT nmpel, daya
Analisis 
Jika Graph tidak terkoneksi , queri salah 
SELECT nmpel, tarif 
FROM pelanggan, harga 
WHERE ap = “lenteng agung" 
AND tarif =110
Sederhanakan 
- Mengapa Harus disederhanakan 
- Bagaimana , Gunakan aturan 
transformasi 
1. p ^ p  p 
2. p V p  p 
3. p ^ true  p 
4. p V false  p 
5. p ^ false  false 
6. P V true  true 
7. P ^ p  false 
8. P V p  true 
9. p1 ^ (p1 Vp2)  p1 
10 . p1 V (p1 ^p2)  p1
Contoh 4 
SELECT ap 
FROM pelanggan 
WHERE nmpel = “sely” 
OR (NOT (ap = “semplak”) 
AND (ap= “semplak” 
OR ap = “bintaro.”) 
AND NOT (ap = “bintaro”)) 
SELECT ap 
FROM pelanggan 
WHERE nmpel = “sely”
Tata Ulang 
Gunakan query tree 
Contoh : 
Cari nama pelanggan yang tidak dilayani oleh ap 
lenteng agung yang mempunyai daya > 1300 dan 
merupakan golongan rumah 
SELECT p.nmpel 
FROM pelanggan p,daya_terpasang d, harga h 
WHERE p.idpel = d.idpel 
AND d.gol = h.gol 
AND p.Ap <>'lenteng agung' 
AND d.daya >900 
AND h.tari=85 
Π nmpel 
σ h.tarif =85 
σ d.Daya >900 
σ p.ap <> lenteng agung 
pelanggan Daya_terpasang harga 
select nmpel from 
(select * 
from pelanggan 
natural join daya_terpasang 
natural join harga 
where ap<> 'lenteng agung' and daya>900 and 
tarif=85)
Equivalent query 
Π nmpel 
σ p.Ap <>'lenteng agung‘ ^ d.daya >900 ^ h.gol='rumah’ 
select nmpel from( 
select * from daya_terpasang 
cross join harga natural join 
pelanggan where 
daya_terpasang.gol=harga.gol 
and ap<>'lenteng agung' and 
daya >900 and tarif=85) 
pelanggan Daya_terpasang harga
RESTRUCTURING 
Π idpel,nmpel 
((select idpel,nmpel from pelanggan where 
((select idpel,gol from daya_terpasang 
(select gol from harga where tarif =85))) 
σ Ap<>’lenteng agung’ 
Π nmpel 
select nmpel from 
ap<>'lenteng agung') 
natural join 
where daya>900) 
natural join 
Π idpel,gol Π gol 
σ Daya>900 
σ tarif=85 
pelanggan Daya_terpasang harga
Tugas kelompok 
Penerbangan ( pno: string, asal : string, tujuan:string, jarak:integer, 
berangkat:time, tiba:time, harga:currency, pstno:string) 
Pesawat (pstno:string, pstnama:string, jaraktempuh:integer) 
Sertifikat(pilotid:string, pstno:string) 
Pilot (pilotid: string, pilot_nama:string, gaji : currency) 
1. Buat aljabar relasional , query graph dan Query Tree untuk mencari nama 
pesawat yang dapat diterbangkan nonstop dari asal ke tujuan 
Optimasikan query ini 
2. SELECT pno 
FROM pernerbangan 
WHERE berangkat =10:00 OR harga>700,000 
AND (berangkat <>10:00 OR harga>700,000) 
Ini juga dioptimasi 
3. SELECT pilot_nama 
FROM pilot plt, sertifikat s, pesawat pst, 
penerbangan p 
WHERE pilotid.p = pilotid.s AND pstno.pst = 
pstno.s 
AND pstno.pst = pno.p 
AND asal =”semarang” 
AND pstnama=”boeing”

Optimasi query

  • 1.
  • 2.
    Komponen Query Processing  Bahasa yang digunakan  SQL : “ Intergrasi bahasa data”  Metodelogi Eksekusi Query  Langkah – langkah yang digunakan untuk mengeksekusi dalam gueri yang diinginkan oleh user  Optimasi Query  Bagaimana mengetahui rencana eksekusi yang “baik”
  • 3.
    Tabel yang ada Pelanggan Daya terpasang harga
  • 4.
    Memilih Alternatif SELECTnmpel FROM pelanggan,daya_terpasang WHERE pelanggan.idpel = daya_terpasang.idpel AND daya > 1300 Strategi 1 Π nmpel(σdaya >1300 Λ pelanggan.idpel=daya_terpasang.idpel(pelanggan X daya_terpasang)) Strategi 2 Πnmpel(pelanggan idpel (σdaya>1300 (daya_terpasang))
  • 5.
    Objek Optimasi Queri Minimal Biaya I/O Cost + CPU Cost + Communication Cost Wide Area Networks Biaya komunikasi akan mendominasi 1. Bandwidth Rendah 2. Kecepatan rendah Local Area Networks Biaya komunikasi tidak mendomionasi
  • 6.
  • 7.
    Lapisan Pada QueryProcessing Query Decomposition Data Localization Global Optimazation Local Optimazation Global Schema Fragment Schema Stats On Fragments Local Schema Control Site Local Sites
  • 8.
    Query Decomposition Pada Lapis Pertama ini input adalah query dirubah menjadi Aljabar query.  Query Decomposition dibagi menjadi 4 bagian :Normalisasi, analisa semantik, memperbaiki Query, menata ulang struktur dari queri (restruktured)
  • 9.
    Data Localization Hasil dari lapis pertama akan dibuat dalam bentuk fragment.  Secara Umum membuat fragment guery ada 2 langkah :Distribusi query dipetakan dalam fragment query, menyederhanakan fragment query.
  • 10.
    Global Optimazation Tujuan dari optimasi query adalah mencari strategi untuk mengeksekusi query.  Strategi eksekusi untuk query terdistribusi tergantung dari aljabar relasional dan cara berkomunikasi ( mengirim/menerima)
  • 11.
    Local Optimization Pada lapisan ini , query terbaik sudah terpilih, dan setiap sub query berada di satu site.
  • 12.
    Dekomposisi Query Normalisasi  Manipulasi Queri  Analisa  Mendeteksi queri yang salah  Sederhanakan  Mengeleminasi predicate yang berulang  Tata Ulang  Gunakan aturan transformasi
  • 13.
    Normalisasi  Aturanuntuk operasi logika 1. p1  p2 <=> p2 ^ p1 2. p1 V p2 <=> p2 V p1 3. p1 ^ ( p2 ^p3)  (p1 ^ p2) ^p3 4. p1 V (p2 Vp3) ( p1 V p2) Vp3 5. p1 ^ (p2 Vp3)(p1 ^ p2) V (p1 ^ p3) 6. p1 V (p2 ^ p3)  (p1 V p2) ^ (p1 V p3) 7.  ( p1 ^ p2) p1 V p2 8.  ( p1 V p2)  p1 ^ p2 9. (p)  p
  • 14.
    Contoh 1 Selectnmpel From pelanggan p , daya_terpasang d Where (p.idpel = d.idpel And ap = 'lenteng agung‘ And daya = 1300 ) or ( p.idpel = d.idpel And ap = 'lenteng agung' And daya = 900 ) Mencari nama pelanggan dengan ap ‘lenteng agung ‘ dengan daya 1300 atau 900 watt SQL : Select nmpel From pelanggan p , daya_terpasang d Where p.idpel = d.idpel And ap = “lenteng agung” And (daya = 1300 Or daya = 900) Normalisasi : p.idpel = d.idpel  ap=“lenteng agung”  (daya = 1300 V Daya =900) atau (p.idpel = d.idpel  ap=“lenteng agung”  Daya = 1300) V (p.idpel = d.idpel  ap=“lenteng agung”  Daya = 900)
  • 15.
    Analisa Menemukan queriyang salah Tipe yang tidak benar 1. Jika ada atribut atau nama relasi tidak didefenisi dalam skema global 2. Ada operasi yang diaplikasikan ke atribut dengan tipe yang salah
  • 16.
    Contoh 2 Selectalamat From pelanggan Where ap > 1900 Queri tidak benar : Atribut alamat tidak dideklarasikan dalam struktur tabel Operator > 1900 tidak compatible dengan type text dari ap
  • 17.
    Kesalahan Semantik 1.Ada komponen yang tidak memberikan konstribusi dalam hasil akhir 2. Hanya sebagian dari relational queris yang dapat di tes untuk koreksi 3. Untuk mendektesi : query graph dan Join Graph
  • 18.
    Contoh 3: Carinama pelanggan dan daya dengan tarif kurang dari 1100 SELECT nmpel, daya FROM pelanggan p, daya_terpasang d, harga h WHERE p.idpel = d.idpel AND d.gol = h.gol AND ap = “lenteng agung" AND tarif <100
  • 19.
    Query Graph pel daya harga FROM FROM pelanggan p, daya_terpasang d, harga h WHERE p.idpel = d.idpel AND d.gol = h.gol AND ap = “lenteng agung" Tarif <100 AND tarif <100 ap = “lenteng agung" hasil SELECT nmpel, daya
  • 20.
    Analisis Jika Graphtidak terkoneksi , queri salah SELECT nmpel, tarif FROM pelanggan, harga WHERE ap = “lenteng agung" AND tarif =110
  • 21.
    Sederhanakan - MengapaHarus disederhanakan - Bagaimana , Gunakan aturan transformasi 1. p ^ p  p 2. p V p  p 3. p ^ true  p 4. p V false  p 5. p ^ false  false 6. P V true  true 7. P ^ p  false 8. P V p  true 9. p1 ^ (p1 Vp2)  p1 10 . p1 V (p1 ^p2)  p1
  • 22.
    Contoh 4 SELECTap FROM pelanggan WHERE nmpel = “sely” OR (NOT (ap = “semplak”) AND (ap= “semplak” OR ap = “bintaro.”) AND NOT (ap = “bintaro”)) SELECT ap FROM pelanggan WHERE nmpel = “sely”
  • 23.
    Tata Ulang Gunakanquery tree Contoh : Cari nama pelanggan yang tidak dilayani oleh ap lenteng agung yang mempunyai daya > 1300 dan merupakan golongan rumah SELECT p.nmpel FROM pelanggan p,daya_terpasang d, harga h WHERE p.idpel = d.idpel AND d.gol = h.gol AND p.Ap <>'lenteng agung' AND d.daya >900 AND h.tari=85 Π nmpel σ h.tarif =85 σ d.Daya >900 σ p.ap <> lenteng agung pelanggan Daya_terpasang harga select nmpel from (select * from pelanggan natural join daya_terpasang natural join harga where ap<> 'lenteng agung' and daya>900 and tarif=85)
  • 26.
    Equivalent query Πnmpel σ p.Ap <>'lenteng agung‘ ^ d.daya >900 ^ h.gol='rumah’ select nmpel from( select * from daya_terpasang cross join harga natural join pelanggan where daya_terpasang.gol=harga.gol and ap<>'lenteng agung' and daya >900 and tarif=85) pelanggan Daya_terpasang harga
  • 27.
    RESTRUCTURING Π idpel,nmpel ((select idpel,nmpel from pelanggan where ((select idpel,gol from daya_terpasang (select gol from harga where tarif =85))) σ Ap<>’lenteng agung’ Π nmpel select nmpel from ap<>'lenteng agung') natural join where daya>900) natural join Π idpel,gol Π gol σ Daya>900 σ tarif=85 pelanggan Daya_terpasang harga
  • 28.
    Tugas kelompok Penerbangan( pno: string, asal : string, tujuan:string, jarak:integer, berangkat:time, tiba:time, harga:currency, pstno:string) Pesawat (pstno:string, pstnama:string, jaraktempuh:integer) Sertifikat(pilotid:string, pstno:string) Pilot (pilotid: string, pilot_nama:string, gaji : currency) 1. Buat aljabar relasional , query graph dan Query Tree untuk mencari nama pesawat yang dapat diterbangkan nonstop dari asal ke tujuan Optimasikan query ini 2. SELECT pno FROM pernerbangan WHERE berangkat =10:00 OR harga>700,000 AND (berangkat <>10:00 OR harga>700,000) Ini juga dioptimasi 3. SELECT pilot_nama FROM pilot plt, sertifikat s, pesawat pst, penerbangan p WHERE pilotid.p = pilotid.s AND pstno.pst = pstno.s AND pstno.pst = pno.p AND asal =”semarang” AND pstnama=”boeing”