You are on page 1of 10

Database

Query Proc. & Opt..1

16. QUERY PROCESSING AND OPTIMIZATION


OPTIMASI QUERY SECARA HEURISTIK
Q2: SELECT PNUMBER, DNUM, LNAME, ADDRESS, BDATE
FROM
PROJECT, DEPARTMENT, EMPLOYEE
WHERE DNUM=DNUMBER AND MGRSSN=SSN AND
PLOCATION=Stafford

Query Tree Q2
(a) Query tree dari ekspresi relational algebra

PNUMBER, DNUM, LNAME, ADDRESS, BDATE

(3)
MGRSSN = SSN

(2)
DNUM = DNUMBER

EMPLOYEE

(1)
PLOCATION = 'Stafford'

PROJECT

Specially prepared by B. Nugroho Budi Priyanto


Last update 5/7/15 1:39 AM

DEPARTMENT

Database

Query Proc. & Opt..2

Initial (canonical) query tree dari SQL query Q2

PNUMBER, DNUM, LNAME, ADDRESS, BDATE

DNUM=DNUMBER AND MGRSSN=SSN AND PLOCATION='Stafford'

EMPLOYEE

PROJECT

DEPARTMENT

Contoh dari Transformasi Query


Dari skema relasi COMPANY berikut
EMPLOYEE
FNAME

MINIT LNAME SSN BDATEADDRESS SEX

SALARY SUPERSSN DNO

DEPARTMENT
DNAME

DNUMBER

MGRSSN MGRSTARTDATE

DEPT_LOCATIONS
DNUMBER

DLOCATION

PNUMBER

PLOCATION

PROJECT
PNAME

DNUM

WORKS_ON
ESSN

PNO

HOURS

DEPENDENT
ESSN

DEPENDENT_NAME SEX

Specially prepared by B. Nugroho Budi Priyanto


Last update 5/7/15 1:39 AM

BDATE RELATIONSHIP

Database

Query Proc. & Opt..3

Untuk Query Q: Find the last names of employees born


after 1957 who works on a project named Aquarius.
Q: SELECT
FROM
WHERE

LNAME
EMPLOYEE, WORKS_ON, PROJECT
PNAME=Aquarius AND PNUMBER=PNO
AND ESSN=SSN AND BDATE>DEC-31-1957

Intial Query-nya adalah sbb:


(gambar 16.4a)

LNAME

PNAME='Aquarius' AND PNUMBER=PNO AND ESSN=SSN AND BDATE>'Dec-31-1957'

PROJECT

EMPLOYEE

WORKS_ON

Pelaksanaan query di atas akan menghasilkan file yang


sangat besar sebagai hasil Cartesian Product dari
EMPLOYEE, WORKS_ON dan PROJECT.
Padahal yang diperlukan adalah hanya untuk Aquarius
Project dan EMPLOYEE dengan BDATE>Dec-31-1957,
sehingga query tersebut dapat diperbaiki dengan
Specially prepared by B. Nugroho Budi Priyanto
Last update 5/7/15 1:39 AM

Database

Query Proc. & Opt..4

melakukan select terlebih dahulu seperti pada gambar


berikut.
(gambar 16.4b)

LNAME

PNUMBER=PNO

ESSN=SSN

PNAME='Aquarius'

PROJECT

BDATE>'DEC-31-1957'

WORKS_ON

EMPLOYEE

Penyempurnaan selanjutnya didapat dengan menukarkan


posisi dari relasi EMPLOYEE dan PROJECT, seperti pada
(gambar 16.4c). Karena PNUMBER merupakan key-attribut
dari relasi PROJECT, maka operasi SELECT akan
mendapatkan hanya satu PROJECT.

Specially prepared by B. Nugroho Budi Priyanto


Last update 5/7/15 1:39 AM

Database

Query Proc. & Opt..5

(Gamber 16.4c)

LNAME

ESSN=SSN

PNUMBER=PNO

BDATE>'DEC-31-1957'

EMPLOYEE

PNAME='Aquarius'

WORKS_ON

PROJECT

Query akan lebih efisien, dengan menggantikan operasi


CARTESIAN PRODUCT yang diikuti dengan kondisi join
menjadi operasi JOIN seperti pada (gambar 16.4d)

Specially prepared by B. Nugroho Budi Priyanto


Last update 5/7/15 1:39 AM

Database

Query Proc. & Opt..6

Gambar 16.4d:

LNAME

ESSN=SSN

PNUMBER=PNO

BDATE>'DEC-31-1957'

PROJECT

WORKS_ON
PNAME='Aquarius'

EMPLOYEE

Selanjutnya peningkatan efisiensi dilakukan dengan hanya


menggunakan atribut yang diperlukan untuk suatu operasi
dengan melakukan operasi PROJECT seawal mungkin
serta mengurangi jumlah tuple dengan melakukan
SELECT terlebih dahulu, seperti pada (gambar 16.4e)

Specially prepared by B. Nugroho Budi Priyanto


Last update 5/7/15 1:39 AM

Database

Query Proc. & Opt..7

Gambar 16.4e:

LNAME

ESSN=SSN

ESSN

PNUMBER=PNO

PNUMBER

PNAME='Aquarius'

PROJECT

Specially prepared by B. Nugroho Budi Priyanto


Last update 5/7/15 1:39 AM

SSN, LNAME

BDATE>'DEC-31-1957'

EMPLOYEE
ESSN, PNO

WORKS_ON

Database

Query Proc. & Opt..8

Aturan Transformasi Umum untuk Operasi Relational


Algebra:
1. Cascade dari : Suatu kondisi selection dapat dipisah
dan dipilah menjadi suatu urutan operasi mandiri:
c1 AND C2 AND AND Cn (R ) = c1 ( c2 (. . .( cn (R )) ))
2. Comutativity of Operasi adalah komutatif.
c1 ( c2 (R )) = c2 ( c1 (R ))
3.Cascade of p:
List1 ( List2 ( ( Listn (R )) )) = List1 (R )
4. Commuting s with p:
A1, A2, , An ( c (R )) = c ( A1, A2, , An (R ))
5. Commutativity of |X| (or X):
R |X|c S = S |X|c R
6. Commuting s with |X| (or X):
c (R |X| S) = ( c (R )) |X| S
jika kondisi select c dapat ditulis sebagai (c1 and c2),
c1 hanya melibatkan attribut dari R dan c2 hanya atribut S,
maka
c (R |X| S) = ( c1 (R )) |X| ( c2 (S))
7. Commuting p with |X| (or X)
L (R |X|c S) = ( A1, , An (R )) |X|c ( B1, , Bm (S))
8. Commutativity of set operations: The set operations
and are comutative but is not.
9. Assosiativity of |X|, X, , and :
(R S) T = R (S T), dimana |X|, X, , atau
Specially prepared by B. Nugroho Budi Priyanto
Last update 5/7/15 1:39 AM

Database

Query Proc. & Opt..9

10. Commuting s with set operations:


c (R S) = ( c (R )) ( c (S)), dimana , , atau
11. The p operation commutes with .
L (R S) = ( L (R )) ( L (S))
12. Other transformations:
C = NOT (c1 AND c2) = (NOT c1) OR (NOT c2)
C = NOT (c1 OR c2) = (NOT c1) AND (NOT c2)
Langkah-langkah untuk mentransformasikan suatu initial
query tree ke dalam optimized query tree adalah sbb:
1. Gunakan aturan 1, dengan memecah operasi SELECT.
2. Gunakan aturan 2, 4, 6 dan 10 yang berhubungan
dengan sifat komutativ dari SELECT dengan operasi
lainnya.
3. Gunakan aturan 9 yang berhubungan dengan
asosiativitas dari operasi binary, susun relasi leaf node
dengan operasi SELECT yang membatasi dan operasioperasi ini dilakukan seawal mungkin.
4. Kombinasikan operasi CARTESIAN PRODUCT dengan
operasi SELECT berikutnya dimana kondisinya
merepre-sentasikan kondisi join kedalam operasi JOIN.
5. Dengan aturan 3, 4, 7 dan 11, pilahkan list dari atribut
projection ke bawah dari tree sejauh mungkin, jika
diperlukan bentuk suatu operasi PROJECT baru.
6. Identifikasi subtree yang merepresentasikan kelompok
dari operasi yang dapat dijalankan dengan satu
algoritma.

Specially prepared by B. Nugroho Budi Priyanto


Last update 5/7/15 1:39 AM

Database

Specially prepared by B. Nugroho Budi Priyanto


Last update 5/7/15 1:39 AM

Query Proc. & Opt..10