@חוקר אמר בשמירת נתונים בטבלה א הנמצאים בטבלה ב:
יש לי טבלת מנויים, בין העמודות מופיע עמודה מצב אישי (אברך/בחור/ילד/אשה/נערה וכו'), קוד מוסד לימודים, וכדומה.
טבלה שניה של ההשתתפות בתוכנית.
אני מתמקד למשל בישיבה על קברו שכל יום נוספים אלפי שורות לטבלת ההשתתפות.
ברצוני אפשרות למיין תוצאות על פי מגדרים, וכדומה.
לבצע שאילתאות ממוזגות יכול ליצור בלגן גדול בשרת כי זה טבלה של מעל 60K מנויים ומעל 4.5G השתתפויות.
לצורך הסינון הכי טוב היה שבכל השתתפות אני שומר גם את שאר ההגדרות של המנוי, אבל א' זה בזבוז כי זה קיים בטבלת המנויים.
ב' באם אני מתקן פרט בפרטי המנוי שיתעדכן גם בטבלת ההשתתפות.
השאלה היא מהי הדרך הנכונה לשלב בין לא להכפיל נתונים,
לא הצלחתי להבין מה יש בטבלה א ומה בטבלה ב, אבל לצורך העניין נביא דוגמה:
א. טבלת מנויים הכוללת שם, משפחה, מגדר, וכל שאר הפרטים האישיים
ב. טבלת פעילות X הכוללת מזהה מנוי, ושאר הפרטים על הפעילות,
וברצונך להביא את כל הפעילויות מהיום האחרון שביצעו מנויים ממגדר זכר, אני הייתי עושה שאילתא כזאת (זה לא קוד תקין, תלוי בשפה שאתה כותב אבל זה ממחיש את העקרון)
select firstName, lastName, migdar
from Users as u
Where u.migdar = 'male' and u.id in
(select X from activities where date )
זה עקרון שלמדתי מ@ארכיטקט שממליץ על קינון שאילתא במקום JOIN לתועלת הקריאות
בעצם השאילתא המקוננת היא השאילתא שאתה רוצה לבצע על הטבלה השניה, ובשאילתא העוטפת אתה מוסיף סינון שאתה לוקח רק את היוזרים שהיוזר ID שלהם נמצא בתת השאילתא, וגם שהם עונים לסינונים הנוספים שלך.
מקווה שהובנתי, אם לא - תשאל