OPTIMASI QUERY
Dilakukan dengan mengetahui bagaimana rencana eksekusi query yang “baik” rencana dari optimasi

Optimasi Query adalah suatu proses untuk menganalisa query untuk menentukan sumber-sumber apa saja yang digunakan oleh query tersebut dan apakah penggunaan dari sumber tersebut dapat dikurangi tanpa merubah output. Atau bisa juga dikatakan bahwa optimasi query adalah sebuah prosedur untuk meningkatkan strategi evaluasi dari suatu query untuk membuat evaluasi tersebut menjadi lebih efektif. Optimasi query mencakup beberapa teknik seperti transformasi query ke dalam bentuk logika yang sama, memilih jalan akses yang optimal dan mengoptimumkan penyimpanan data.
Tujuan dari optimasi query adalah menemukan jalan akses yang termurah untuk meminimumkan total waktu pada saat proses sebuah query. Untuk mencapai tujuan tersebut, maka diperlukan optimizer untuk melakukan analisa query dan untuk melakukan pencarian jalan akses.


Query dapat dilakukandengan mengoptimalkan ekspresi Aljabar Relasional seperti :
  • Selection (σ)
  • Projection (̟)
  • Cartesian Product / Cross Product (X)
  • Union (∪)
  • Set-Difference (-)


    Berikut tabel yang akan dibuat aljabar relasional dan optimasi querynya

    Tabel Pelanggan   
                                                 Tabel Harga                    
                           
    Tabel Daya Terpasang


    ALJABAR RELASIONAL

    SELECT nmpel
    FROM pelanggan,daya_terpasang
    WHERE pelanggan.idpel = daya_terpasang.idpel
    AND daya > 1300

    Π nmpel(σdaya >1300 Λ pelanggan.idpel=daya_terpasang.idpel(pelanggan X daya_terpasang))


    Query Decomposition
  • Pada Lapis Pertama ini input adalah query dirubah menjadi Aljabar query.
  • Query Decomposition dibagi menjadi 4 bagian :
    • Normalisasi
      Proses untuk mengubah suatu tabel yang memiliki  masalah tertentu  ke dalam dua buah tabel    atau lebih, yang tidak lagi memiliki masalah tersebut (Abdul Kadir, 2002: 52).
    • Analisa semantikMendeteksi queri yang salah
    • Memperbaiki Query
    • Menata ulang struktur dari query (restruktured)
      Gunakan aturan transformasi

     Aturan untuk operasi logika
     p1 ∧ p2 <=> p2 ^ p1
     p1 V p2 <=> p2 V p1
     p1 ^ ( p2 ^p3)  (p1 ^ p2) ^p3
     p1 V (p2 Vp3) ( p1 V p2) Vp3
     p1 ^ (p2 Vp3)(p1 ^ p2) V (p1 ^ p3)
     p1 V (p2 ^ p3)  (p1 V p2) ^ (p1 V p3)
     ¬ ( p1 ^ p2) ¬p1 V ¬p2
     ¬ ( p1 V p2)  ¬p1 ^ ¬p2
     ¬(¬p)  p


    CONTOH 1
    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)

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