אכן, אם ה ID ידוע כבר לא צריך לבצע שאילתה כדי לשלוף את ה ID אבל אם לדוגמא יש לך את השם של המשתמש ואתה רוצה למחוק את הנתונים שלו מטבלה אחרת (או מאותה טבלה לפי ID) אז אתה מבצע שאילתת SELECT בתוך ה DELETE כפי שמוצג מעלה.
למה זה טוב? דבר ראשון זה מונע ממך לבצע כמה שאילתות כל פעם אחת אחרת. אפשר היה לעשות שאילתה של SELECT שמחזירה את ה ID ואז עם ה ערך של ה ID לבצע שאילתת DELETE נוספת. זה יגרום לביצוע של 2 שאילתות (שזה מיותר מבחינת אופטימיזציה) לעומת ביצוע שאילתה אחת שמבצעת שאילתה נוספת פנימית. בדרך כלל MYSQL מריץ את השאילתה הזאת בתור שאילתה אחת ולא מחלק אותה לכמה שאליתות, (בניגוד ל joins ו ו unions ).
עוד דבר שלפעמים נותן יתרון זה ש sub queries (תתי שאילתות) כתובות בצורה קריאה יותר מאשר ה JOINS ו UNIONS למיניהם.
|