מהם היתרונות והחסרונות של הצטרפות או שאילתת משנה?

...

שאילתות מסד נתונים מאחזרות מידע ספציפי ממסד הנתונים.

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

מה הופך שאילתת משנה

שאילתת משנה היא משפט "SELECT" בתוך פסקת "WHERE" או "HAVING" של משפט חיצוני "INSERT", "UPDATE", "MERGE" או "DELETE". שאילתת המשנה נקראת גם "שאילתה פנימית" או "בחירה פנימית". לשאילתת המשנה עשויה להיות פסקת "FROM" עם טבלה אחת או יותר, ואפשר לכלול משפט "WHERE", "GROUP BY" או "HAVING". זה תמיד מוקף בסוגריים.

סרטון היום

יתרונות וחסרונות של שאילתות משנה

שאילתות משנה הן יתרון מכיוון שהן בונות את השאילתה כדי לבודד כל חלק של ההצהרה, לבצע את אותה פעולה שבדרך כלל דורשת הצטרפות ואיגודים מורכבים וקל יותר לביצוע לקרוא. שאילתות משנה אפילו היו הבסיס לשם "שפת שאילתות מובנית" (SQL) בגלל המבנה הניתן לקריאה בקלות. החיסרון הוא שלא ניתן לשנות טבלה ולבחור מאותה טבלה בתוך שאילתת משנה באותה משפט SQL. ביצוע שאילתות משנה עשוי להימשך זמן רב יותר מאשר צירוף בגלל האופן שבו מייעל מסד הנתונים מעבד אותן.

מה גורם להצטרפות

ניתן לשכתב את רוב שאילתות המשנה כצירופים, ואת רוב ההצטרפות ניתן לשכתב כשאילתות משנה. צירוף מגדיר שתי טבלאות או יותר לפי עמודה קשורה. טבלאות בדרך כלל מחוברות על מפתחות ראשיים וזרים. לדוגמה, לטבלת עובד עשוי להיות מפתח ראשי של עמודת מזהה עובד, בעוד לטבלת גליון זמנים יש גם עמודת מזהה עובד שהיא מפתח זר לטבלת העובד. ניתן לכתוב את ה-SQL join כ-"WHERE employee.empid = timesheet.empid" או "FROM werknemer JOIN timesheet ON (employee.empid = timesheet.empid)."

יתרונות וחסרונות של Joins

היתרון העיקרי של הצטרפות הוא שהוא מבוצע מהר יותר. ייתכן שהעלייה בביצועים לא תהיה מורגשת על ידי משתמש הקצה. עם זאת, מכיוון שהעמודות נקראות באופן ספציפי ומוספות לאינדקס ומותאמות על ידי מנוע מסד הנתונים, זמן האחזור כמעט תמיד יהיה מהיר יותר מזה של שאילתת משנה. יש גם חיבורים פנימיים וחיצונים, חיבורים שמאלה וימינה, חיבורים מלאים וצירוף צולב. החיסרון בשימוש ב-joins הוא שהן לא קלות לקריאה כמו שאילתות משנה. חיסרון נוסף הוא שזה יכול לבלבל באיזה חיבור הוא סוג החיבור המתאים לשימוש כדי להניב את קבוצת התוצאות הרצויה הנכונה.