:S1 + S2הורד את ה selectionכך שיהיה נמוך ככל האפשר בעץ (כלומר יתבצע הכי מוקדם שיש) ,תוך כדי כך שלא פוגע בתוצאה. : S3סדר את מחדש את העלים ככה שהטבלאות עם כמות השורות הקטנה יותר יהיו נמוכים יותר בעץ (יתבצעו קודם) – כמובן שמדובר על כמות הרשומות לאחר ביצוע ה selection-במידה ויש. :S4החלף מכפלה קרטזית בjoin- :S5הורד את ה projection-כך שיהיה נמוך ככל האפשר בעץ +מחק עמודות מיותרות שלא יהיה להן שימוש בהמשך (חשוב לראות שאנחנו לא מוחקים עמודה שנצטרך בהמשך) . עץ ראשוני – מכפלה קרטזית של הטבלאות ,הוספת selectionשל התנאים ו projectionעל העמודות הרלוונטיות Primary Index טבלת הנתונים ממוינת לפי שדה האינדקס שהוא המפתח הראשי של הטבלה Clustering Index טבלת הנתונים ממוינת לפי שדה האינדקס שאינו המפתח הראשי של הטבלה Secondary indexטבלת הנתונים אינה ממוינת לפי שדה האינדקס In a B-tree, pointers to data records exist at all levels of the tree In a B+-tree, all pointers to data records exists at the leaf-level nodes עלויות – S join Aכלומר Sהיא השמאלית ,או בעצם Sתהיה בלולאה החיצונית. – Bsכמות הבלוקים של – Ps ,Sכמות הרשומות בבלוק ב.S- – Baכמות הבלוקים של – Pa ,Aכמות הרשומות בבלוק ב.A- אם הכל נכנס בזיכרוןBs + Ba : Bs + Ps*Bs*Ba :Simple R Bs + ceil(Bs/(B-2)) * Ba :Block Nested 3 * (Bs + Ba) :Grace Hash join BRlogBR + BSlogBS + BR + BS :Sort-Merge Join 2BRlogM-1BR + 2BSlogM-1BS + BR + BS :Fixed SortMerge fB 2 B 1 B (create or replace procedure transfer sender int, receiver int, amount dec ) Procedure language plpgsql as $$ begin -- subtracting the amount from the sender's account update accounts set balance = balance - amount ;where id = sender ;commit ERD TO RELATION end;$$ . 1הופכים כל ישות רגילה לרלציה. .2אם יש תכונה מרובת ערכים ,מפרקים לרלציה נפרדת. .3אם יש תכונה מורכבת ,נפרק את תת התכונות לתכונות. .4מטפלים בישות חלשה. ישות חלשה – ישות כפופה שאין לה זיהוי עצמאי (תכונת מפתח) ,כיוון שלא ניתן לזהות מופע שלה יש להסתייע בתכונות של ישות אחרת הקשורה אליה, המכונה לצורך זה :ישות חזקה. CREATE [OR REPLACE] FUNCTION function_nam )e (arguments RETURNS return_datatype LANGUAGE plpgsql AS $variable_name$ DECLARE ;declaration [...] -- variable declaration BEGIN Function syntax > < function_body [...] -- logic } RETURN { variable_name | value ;END $$ Triggers Syntax