ל-MySQL יש מנגנון שנקרא MySQL Query Cache הרעיון מאחוריו הוא שאם שלחת שאילתא לשרת קיבלת מידע מסויים, שלחת שוב את השאילתא לשרת ולא התבצע שום עדכון בטבלאות, אתה תקבל את אותו מידע מה-Cache.החסרון העיקרי שלו שזה לא מתאים למערכות שמתעדכנות בתדירות גבוהה, כי אז אין לו כל כך משמעות.
שימוש ב-Memcached הוא לא כל כך טריוויאלי כי לרוב לא מבינים מתי להשתמש בו, זה שהוא שומר נתונים באופן זמני בזיכרון ומחזיר אותם זה יפה, אבל חשוב לדעת שגם הוא מוגבל כמובן בגודל, לקחת DB שלם ולאחסן לתוכו זה overkill מטורף לשרת.
הדרך הנכונה להשתמש בו היא להריץ DESCRIBE/EXPLAIN על שאילתות שאנחנו יודעים שהן כבדות, לבחור מתוכן את השאילתות שמתבצעות ב-frequency הגבוה ביותר ולשמור את התוצאות שלהן ב-Memcached.
עכשיו אני שוב חוזר לבעיה של הבחור, אתה צריך להבין שבשאילתות הבסיסיות ביותר שמשתמשות ב-LEFT JOIN/RIGHT JOIN/INNER JOIN/CROSS JOIN/OUTER JOIN מתבצעות אופטימיזציות של המנוע עצמו, כמובן שזה גבולי ביחס לאיך שהוא כותב את השאילתא, אבל אין לו את הדאגות האלה.
שאילתות שמתבצעות על מספר טבלאות קטן, זה ממש לא רלוונטי לחלק את זה ל-2 שאילתות.