הצטרפו לקבוצות שלנו לקבלת עדכונים מרוכזים פעם בשבוע:

ווטסאפ:
http://wa.dwh.co.il
טלגרם:
http://telegram.dwh.co.il

מנגנון הקיים מגרסא 6.5 המאפשר לנו ליצור SQL יעילים יותר וזאת באמצעות "השמטת" join.

  ניקח דוגמא מעולם Island resort marketing

ישנה טבלת הReservation line אשר בה יש קוד שירות (Service_id) . את קוד השירות מפענחת טבלת Services. אם ניקח אובייקט מטבלת Reservation line ונשתמש בהתניה של שירות :

הSQL שנוצר :

 

SELECT

  sum(Reservation_Line.future_guests)

FROM

  Reservation_Line,

  Service

WHERE

  ( Reservation_Line.service_id=Service.service_id  )

  AND  (

`  Service.service  =  'Bungalow'

  )

 

הרעיון העומד מאחורי הindex awareness הוא: קודם הוצא את הקוד (במקרה זה service_id ) לפי ההתניה (במקרה זה Service) ואת הקוד שתול בטבלה עליה אתה רוצה לבצע את ההתניה (במקרה זה  Reservation_Line).

במילים אחרות, אנו נרצה לראות את הקוד הבא:

 

SELECT

sum( Reservation_Line.future_guest

FROM

  Reservation_Line

WHERE

  (

  Reservation_Line.service_id  =  212

  )

 

כלומר Bungalow תורגם לערכו:212 וקוד זה "נשתל" בהתניה על  Reservation_Line

כדי לבצע זאת עלינו:

  1. להכנס לproperties של האובייקט שאנו רוצים להשתמש בו בהתניה. (בדוגמא Service).
  2. לגשת ללשונית keys.
  3. יפתח המסך הבא:
  4. נקיש , פעמיים כדי להכניס Keys, המתארים את הקשר בין הטבלאות. כעקרון יכולים להיות שני סוגים של KeysPrimary key המתאר את המפתח של הטבלה שעליה אנו רוצים לבצע התניה (במקרה זה: Service.service_id) ו foreign key המתאר את המפתח בטבלה השניה. (במקרה זה, Reservation_Line.service_id).
  5. נקבל את המסך הבא:


     
  6. נגדיר את הערכים הנכונים של הkeys:. ליד כל key בחלק הselect ישנו  (נראה רק כשמקשים על הערך). נקיש עליו ונקבל את המסך הבא:

    מסך זה זהה לחלוטין למסך הגדרת אובייקט
    . למעט משפט : "Type your Select here", אותו אנו נמחק.
  7. נגדיר את הערכים בשני הkeys בהתאם , ונקבל את המסך הבא:
  8. ליתר בטחון נקיש על , כדי לוודא שתקין ועובד.
  9. לסיום, נקיש .

     

הערה: המנגנון פועל בצורה טובה, רק כאשר הערכים מוכנסים לתוך השאילתא באמצעות רשימת ערכים. אם נכניס ערכים בצורה ידנית ,המנגנון לא יעבוד בצורה טובה.