1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה...

39
1 תתתתתתתתתתת תת תתתתתתתQuery Optimization
  • date post

    19-Dec-2015
  • Category

    Documents

  • view

    226
  • download

    2

Transcript of 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה...

Page 1: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

1

אופטימיזציה של שאילתות

Query Optimization

Page 2: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

2

?מדוע אופטימיזציה נחוצה

ומסד נתונים n נתונה שאילתה בגודל •מהו גודל התוצאה?, mבגודל

שורות, שבאחת 2עם R(A) לדוגמה: יחס •1 ובשניה יש את הערך 0מהן יש את הערך

? R x R כמה שורות יש ב- – ?R x R x Rוכמה יש ב- –

O(mn)גודל התוצאה יכול להיות •

Page 3: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

3

סיבוכיות נתונים Data Complexity

בדרך כלל שאילתות הנן קטנות ולכן ניתן •להניח שגודל השאילתה קבוע

הוא a, כאשר O(ma)לכן, גודל התוצאה הוא •קבוע המציין את גודל השאילתה

•data complexity הנו מונח טכני המציין שזמן הריצה של חישוב שאילתה נמדד

בהנחה שגודל השאילתה קבוע ורק גודל הנתונים משתנה מקלט אחד לשני

Page 4: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

4

ארכיטקטורה של אופטימייזרOptimizer Architecture

Algebraic Space

Method-StructureSpace

Cost Model

Size-DistributionEstimator

Planner

Rewriter

Page 5: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

5

ארכיטקטורה של אופטימייזר

מוצא שאילתות שקולות (: Rewriterמשכתב )•שניתן אולי לחשב מהר יותר מאשר את השאילתה

המקורית (לדוגמה, שאילתה שבה סדר פעולות הצירוף שונה מאשר בשאילתה המקורית)

כל השאילתות הללו מועברות למתכנן–

בוחן את כל האפשרויות :(Plannerמתכנן )•השונות לחישוב השאילתה ובוחר את האפשרות

הזולה ביותר (קרי, המהירה ביותר)המתכנן משתמש במודולים האחרים, כדי למצוא את –

האפשרות הזולה ביותר

Page 6: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

6

ארכיטקטורה של אופטימייזר (המשך)

קובע איזה סוגים :(Algebraic Spaceמרחב אלגברי )•של שאילתות ייבדקו

לדוגמה, אין טעם לבדוק שאילתה שיש בה מכפלה קרטזית –ועדיף לחפש שאילתה שקולה ללא מכפלה קרטזית

Method-Structureמרחב המבנים והשיטות )•Space :) קובע איזה סוגים של אינדקסים קיימים

ובאיזה אלגוריתמים ניתן להשתמש לחישוב הפעולות האלגבריות המופיעות בשאילתה

לדוגמה, איזה אלגוריתמים אפשריים לחישוב צירוף–

Page 7: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

7

ארכיטקטורה של אופטימייזר (המשך)

מעריך את המחיר (: Cost Modelמודל המחיר )•של חישוב השאילתה לפי כל אחת מהתוכניות

משתמש במודול שמעריך את גודל התוצאות–

Size-Distributionמעריך גודל התוצאה )•Estimator:) מעריך את גודל מסד הנתונים, גודל

האינדקסים, שכיחות הערכים עבור האטריביוטים השונים וגודל תוצאות הביניים

Page 8: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

8

מרחב אלגבריAlgebraic Space

נדון באופטימיזציה של שאילתות המורכבות מבחירה, הטלה •וצירוף (מכפלה קרטזית היא מקרה מיוחד של צירוף)

ניתן להציג שאילות אלה ע"י עץ•דוגמה של יחסים ושל שאילתה:•

emp(name, age, sal, dno) dept(dno, dname, floor, mgr, ano) act(ano, type, balance, bno)bank(bno, bname, address)

select name, floorfrom emp, deptwhere emp.dno=dept.dno and sal>100K

Page 9: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

9

עצים 3name, floor

⋈ dno=dno

sal>100K

EMP

DEPT

name, floor

⋈ dno=dno

sal>100K

EMP DEPT

name, floor

⋈ dno=dno

sal>100K

EMP

DEPT

dno, floor

name,sal,dno

dno, name

T1 T2 T3

Page 10: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

10

ביצוע פעולות בחירה והטלה מוקדם ככל האפשר

שלושת העצים נבדלים זה מזה באופן שבו מבוצעות פעולות •הבחירה וההטלה

פעולות הבחירה וההטלה מבוצעות מוקדם ככל T3בעץ • maximal pushing of selections andהאפשר (

projections(המשכתב מוצא ביטוי שקול לביטוי המקורי שבו פעולות ההטלה –

והבחירה מבוצעות מוקדם ככל האפשר

ביצוע פעולות בחירה והטלה מוקדם ככל האפשר מקטין את •תוצאות הביניים מוקדם ככל האפשר

ככל שתוצאות הביניים קטנות יותר, המחיר הכולל של חישוב –השאילתה הנו תמיד (קרי, בכל תוכנית אפשרית) קטן יותר

ביצוע מוקדם ככל האפשר של פעולות בחירה והטלה אינו •מייקר אותן

Page 11: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

11

on the flyביצוע הטלה ובחירה

פעולות בחירה והטלה מבוצעות כחלק מפעולות •אחרות

בנוסף, פעולות בחירה והטלה שמופיעות בזו אחר זו •מבוצעות ברצף אחד

לכן, פעולות בחירה והטלה אינן מצריכות כתיבה •לדיסק או קריאה מהדיסק

פעולות בחירה מבוצעות כאשר היחסים נקראים •לראשונה

פעולות הטלה מבוצעות תוך כדי יצירת התוצאות של •פעולות קודמות

Page 12: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

12

על המרחב האלגברי 1מגבלה

המרחב האלגברי עשוי לכלול מספר רב של •שאילתות שכולן שקולות לשאילתה המקורית

חשוב מאוד לצמצם מרחב זה, כדי להקטין את •מספר האפשרויות שיש לבדוק

כוללים במרחב האלגברי רק שאילתות, :1מגבלה •שבהן פעולות הבחירה וההטלה

מבוצעות מוקדם ככל האפשר–on the flyומבוצעות –

איזה משלושת העצים מקיים מגבלה זו?•

Page 13: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

13

על המרחב האלגברי 2מגבלה מכיוון שהמיקום של פעולות הבחירה וההטלה נקבע •

, אפשר לכתוב עצי שאילתות רק עם 1ע"י מגבלה פעולות צירוף

לא מבצעים מכפלות קרטזיות, אלא אם : 2מגבלה •כן הדבר הכרחי (כי בדר"כ מכפלה קרטזית מייצרת

תוצאה גדולה ולכן המחיר של יקר)דוגמה:•

select name, floor, balancefrom emp, dept, acntwhere emp.dno=dept.dno and

dept.ano = acnt.ano

Page 14: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

14

עצים3

⋈ ano=ano

EMP DEPT

T1 T2 T3

⋈ dno=dno ACNT

⋈ ano=ano,

dno=dno

EMP ACNT

⋈ ACNT

⋈ dno=dno

ACNT DEPT

⋈ ano=ano EMP

באיזה עצים יש מכפלה

קרטזית?

Page 15: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

15

על המרחב האלגברי3מגבלה

outer (החיצוניבפעולת צירוף, היחס השמאלי הנו •relation (הפנימי ) והיחס הימני הנוinner relation מינוח – (

block & index nested-loops joinsזה מתאים לשיטות של היחס הפנימי הנו יחס מבסיס הנתונים ולא : 3מגבלה •

תוצאת בינייםדוגמה:•

select name, floor, balancefrom emp, dept, acnt, bankwhere emp.dno=dept.dno and dept.ano=acnt.ano

and acnt.bno = bank.bno

Page 16: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

16

עצים 3

⋈ ano=ano

EMP DEPT

T1 T2 T3

⋈ dno=dno ACNT

⋈ ano=ano

EMP DEPT

⋈ dno=dno

ACNT

איזה עצים מקיימים?3 מגבלה

⋈ bno=bno

BANK

BANK

⋈ bno=bno

⋈ ano=ano

EMPDEPT

⋈ dno=dno

ACNT

⋈ bno=bno

BANK

Page 17: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

17

מרחב אלגברי – סיכום

בודקים תוכניות חישוב שבהן •פעולות בחירה והטלה מבוצעות מוקדם ככל האפשר 1.

וכחלק מפעולות אחרותפעולות בחירה מבוצעות תוך כדי קריאת יחסי בסיס–פעולות הטלה משולבות יחד עם פעולות בחירה, או –מבוצעות תוך כדי יצירת תוצאות ביניים של פעולות צירוף או –

תוך כדי קריאת יחסי בסיס

לא מבצעים מכפלה קרטזית2.

היחס הפנימי בפעולת צירוף הוא תמיד יחס מבסיס 3.הנתונים

Page 18: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

18

)Plannerהמתכנן (

משתמשים בתכנות דינמי כדי למצוא את הסדר הזול • יחסיםNביותר של ביצוע צירוף של

אינטואיציה:•, הערך r, מצא את כל הדרכים האפשריות לקריאת rלכל יחס בסיס –

את המחיר של כל אחת מהדרכים הללו ובחר בדרך הזולה ביותרלכל זוג יחסים, מצא את כל הדרכים האפשריות לביצוע צירוף של –

שני היחסים, תוך שימוש בדרכים הזולות ביותר שנמצאו בשלב הקודם לקריאת היחסים הללו, ובחר בדרך הזולה ביותר

יחסים, מצא את הדרך הזולה ביותר להרחיבו k-1לכל צירוף של –r היחסים הללו ועוד יחס אחד נוסף k-1לצירוף של

יחסים, בחר בדרך הזולה Nבהינתן כל הדרכים לביצוע צירוף של –ביותר

למעשה שומרים בכל שלב לא רק את התוכנית הזולה ביותר, אלא את )פרטים בהמשך(סדר מעניין התוכנית הזולה ביותר לכל

Page 19: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

19

הזרמת התוצאה בחלקים)Pipelining Joinsלצירוף הבא (

נניח שצריך לחשב את הביטוי•

)Emp ⋈ Dept (⋈ Acnt Emp ⋈ Deptבעקרון, צריך לחשב את הצירוף •

ובמהלך החישוב לכתוב את התוצאה לדיסק בגמר החישוב, צריך לקרוא את התוצאה מהדיסק •

Acntולחשב את הצירוף שלה עם היחס block & index nested-loops joinsבשיטות של •

אפשר לוותר על כתיבת תוצאת הביניים לדיסק

Page 20: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

20

Pipelining Joins - Example

Read block from Emp

Find matching Dept tuples using index

Find matching Acnt tuples using index

Write final output

1

2 3

4

Emp blocks

Dept blocks

Acnt blocks

Output blocks Buffer

Page 21: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

21

3הסיבה למגבלה

עצים שבהם היחס הפנימי הוא תמיד מבסיס • והם left-deep treesהנתונים נקראים block & index nested-loopsמאפשרים לבצע

join -בשיטת ה pipeline תוך ניצול מקסימלי של ,האינדקסים שקיימים עבור היחסים של מסד

הנתונים

Page 22: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

22

תזכורת לגבי אופן הפעולה של שיטת התכנות הדינמי

כדי לקבוע את התוכנית האופטימלית לחישוב הצירוף של •, בוחרים את התוכנית {R1, R2, R3, R4}תת-קבוצה

:האופטימלית מבין האפשרויות הבאות כאשר מוסיפים לה {R2, R3, R4}התוכנית האופטימלית עבור –

R1בשלב האחרון צירוף עם התוכנית האופטימלית לקריאת

כאשר מוסיפים לה {R1, R3, R4}התוכנית האופטימלית עבור –R2בשלב האחרון צירוף עם התוכנית האופטימלית לקריאת

כאשר מוסיפים לה {R2, R1, R4}התוכנית האופטימלית עבור –R3בשלב האחרון צירוף עם התוכנית האופטימלית לקריאת

כאשר מוסיפים לה {R2, R3, R1}התוכנית האופטימלית עבור –R4בשלב האחרון צירוף עם התוכנית האופטימלית לקריאת

Page 23: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

23

אבל לא מספיק לחשב רק את המחיר האופטימלי לכל

תת-קבוצהR(A,B) ⋈ S(B,C)( ⋈ T(B,D)(רוצים לחשב: •

אינו היעיל S ו- R של sort-merge joinיתכן ש- •Bביותר, אבל הוא מייצר תוצאה שממוינת על

, אז הצירוף של התוצאה B ממוין על Tאם גם •) זול sort-merge join (בשיטת ה- Tהנ"ל עם

עד כדי כך, שהמחיר הכולל הוא הזול ביותר

Page 24: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

24

סדר מעניין Interesting Orders

כאמור, יש שיטות שבהן המחיר קטן יותר אם היחסים (או •אחד מהם) הנם ממוינים מראש על האטריביוטים של

)sort-merge joinהצירוף (למשל, בשיטה של יחסים) שבהן kלכן, חשוב לייצר תוכניות (עבור צירוף של •

התוצאה ממוינת על אטריביוטים המשתתפים בפעולת צירוף מאוחרת יותר

) שומרים את התוכנית interesting orderלכל סדר מעניין (•הזולה ביותר

אם התוכנית הזולה ביותר (מתוך כלל התוכניות) הנה ללא •סדר, אז שומרים גם אותה

Page 25: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

25

דוגמה

רוצים לחשב את השאילתה•select name, mgrfrom emp, deptwhere emp.dno=dept.dno and sal>30K and

floor = 2• Indexes: B+tree index on emp.sal, B+tree index on

emp.dnp, hashing index on dept.floor• Join Methods: Block and index nested-loops, and sort-

mergeמחירי החישוב המופיעים בדוגמה נקבעו באופן שרירותי•

Page 26: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

26

Step 1 – Accessing Single Relations

Relation Interesting Order

Plan Cost

emp emp.dno Access through B+tree on emp.dno 700

Access through B+tree on emp.sal

Sequential scan

200

600

dept Access through hashing on dept.floor Sequential scan

50

200

מה שומרים לשלב הבא?

Page 27: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

27

Step 2 – Joining 2 Relations

Join Method

Outer/Inner Plan Cost

nested loops

emp/dept •For each emp tuple obtained through B+Tree on emp.sal, scan dept through hashing index on dept.floor to find tuples matching on dno

1800

•For each emp tuple obtained through B+Tree on emp.dno and satisfying selection, scan dept through hashing index on dept.floor to find tuples matching on dno

3000

Page 28: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

28

Step 2 – Joining 2 Relations

Join Method

Outer/Inner Plan Cost

nested loops

dept/emp •For each dept tuple obtained through hashing index on dept.floor, scan emp through B+Tree on emp.sal to find tuples matching on dno

2500

•For each dept tuple obtained through hashing index on dept.floor, scan emp through B+Tree on emp.dno to find tuples satisfying the selection on emp.sal

1500

Page 29: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

29

Step 2 – Joining 2 RelationsJoin Method

Outer/

Inner

Plan Cost

sort merge

•Sort the emp tuples resulting from accessing the B+Tree on emp.sal into L1•Sort the dept tuples resulting from accessing the hashing index on dept.floor into L2•Merge L1 and L2

2300

•Sort the dept tuples resulting from accessing the hashing index on dept.floor into L2•Merge L2 and the emp tuples resulting from accessing the B+Tree on emp.dno and satisfying the selection on emp.sal

2000

Page 30: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

30

התוכנית הנבחרת

מהי התוכנית הנבחרת?•

Page 31: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

31

מודל המחירCost Model

כבר הוסבר כיצד מחשבים את המחיר של כל •שיטת חישוב

עכשיו נסביר איך מעריכים את גודל התוצאה•

Page 32: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

32

Estimating Result Sizes

Page 33: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

33

בחירת תוכנית לחישוב צירוף של שלושה יחסים

,Reservesרוצים לחשב צירוף של שלושת היחסים: •Sailors -ו Boats

שתי האופציות המקיימות את המגבלות שהוזכרו קודם •(תוך התעלמות מסדר היחסים בפעולת הצירוף הראשונה)

הנן:

(Sailors ⋈ Reserves) ⋈ Boats

(Reserves ⋈ Boats) ⋈ Sailors

ההחלטה מהי התוכנית הזולה יותר תלויה בין היתר •בשאלה איזה תוצאת ביניים היא קטנה יותר

Page 34: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

34

אנליזה של גודל התוצאות

צריך להעריך את גודל התוצאה של הצירוף •)Sailors ⋈ Reserves ( לעומת גודל התוצאה של

)Reserves ⋈ Boats(הצירוף שומר סטטיסטיקות לגבי היחסים DBMSה- •

והאינדקסיםסטטיסטיקות אלה מעודכנות מפעם לפעם, אבל •

לא בכל פעם שמעדכנים את מסד הנתונים

Page 35: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

35

Statistics Maintained by DBMS

• Cardinality: Number of tuples NTuples(R) in each relation R

• Size: Number of pages NPages(R) in each relation R• Index Cardinality: Number of distinct key values

NKeys(I) for each index I• Index Size: Number of pages INPages(I) in each

index I• Index Height: Number of non-leaf levels IHeight(I) in

each B+ Tree index I• Index Range: The minimum value ILow(I) and

maximum value IHigh(I) for each index I

Page 36: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

36

Estimating Result Sizes

• Consider

• The maximum number of tuples is the product of the cardinalities of the relations in the FROM clause

• The WHERE clause is associating a reduction factor with each term

• Estimated result size is: maximum size times product of reduction factors

SELECT attribute-list

FROM relation-list

WHERE term1 and ... and termn

Page 37: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

37

Estimating Reduction Factors

• column = value: 1/NKeys(I) if there is an index I on column. This assumes a uniform distribution. Otherwise, System R assumes 1/10.

• column1 = column2: 1/Max(NKeys(I1),NKeys(I2)) if there is an index I1 on column1 and I2 on column2. If only one column has an index, we use it to estimate the value. Otherwise, use 1/10.

• column > value: (High(I)-value)/(High(I)-Low(I)) if there is an index I on column.

Page 38: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

38

Example

• Cardinality(R) = 1,000 * 100 = 100,000• Cardinality(S) = 500 * 80 = 40,000• NKeys(Index on R.agent) = 100• High(Index on Rating) = 10, Low = 0

SELECT *

FROM Reserves R, Sailors S

WHERE R.sid = S.sid and S.rating > 3 and

R.agent = ‘Joe’

Page 39: 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה נחוצה? נתונה שאילתה בגודל n ומסד נתונים בגודל

39

Example (cont.)

• Maximum cardinality: 100,000 * 40,000 • Reduction factor of R.sid = S.sid: 1/40,000• Reduction factor of S.rating > 3: (10–3)/(10-0)

= 7/10• Reduction factor of R.agent = ‘Joe’: 1/100

• Total Estimated size: 700