איטיות ב SUM ב MYSQL
-
משום מה כאשר אני משתמש ב SUM mysql (עם php)
זה איטי יותר (משמעותית) מסתם שאילתה רגילהאני נתקל בזה כאשר אני רוצה ליצור דוח של כמה דפי גמרא נבחן תלמיד
ולשם כך אני מריץ לולאה על טבלת התלמידים
ועל כל תלמיד אני מבצע שאילתת SUM כמה דפים יש לו בטבלת הבחינות-כאשר אני מבצע שאילתת SELECT רגילה זה לא לוקח זמן
אבל כאשר זה שאילתה של SELECT (SUM) זה לוקח הרבה זמןאציין שמדובר בשרת עם 3 מעבדים ו 4GB זיכרון ראם
השאלה שלי שאם יש סיבה שגורמת לאיטיות
או שפשוט צריך משהוא חזק יותר?תודה רבה
-
@יוס אמר באיטיות ב SUM ב MYSQL:
ולשם כך אני מריץ לולאה על טבלת התלמידים
ועל כל תלמיד אני מבצע שאילתת SUM כמה דפים יש לו בטבלת הבחינותעל פניו נראה לי כפילות מיותרת להשתמש בלולאה וגם בשאילתת קיבוץ ביחד, כשלכאורה שאילתא לבד זה מספיק לפתרון הבעיה.
אבל אני מציע לך לצרף לשאלה את נוסח השאילתא ועוד נתונים (סוג שדות, מספר רשומות בטבלה) יהיה יותר קל לעזור לך. -
תודה על ההיענות
אני מצרף דוגמה למה שאני מבצע
$select = "SELECT * FROM `clientes` ORDER BY `clientes`.`last_name` ASC"; mysqli_fun($host,$username,$password,$dbname,$select ); $result_clientes = mysqli_query($link,$select ); while ($array = mysqli_fetch_assoc($result_clientes)) { $sql = "SELECT SUM(`score`) FROM `score` WHERE `pupil` = $array[id]"; mysqli($host,$username,$password,$dbname,$sql); }
אציין שהאינדקס היחיד זה מזהה התלמיד (id) בטבלת התלמידים
תודה רבה
-
@יוס אמר באיטיות ב SUM ב MYSQL:
מזהה התלמיד
לפי השאילתה נראה שהאינדקס בטבלת המבחנים אמור להיות על
pupil
.
זה אמור דבר ראשון להקל על השאילתה. עזרה ראשונה..
במקביל תוכל גם לשנות במקום לולאה של שאילתאות עבור הסכום של כולם, תוכל לעשות שאילתה כזו:SELECT SUM(`score`), `pupil` FROM `score`GROUP BY `pupil`
כך תקבל בשאילתה אחת טבלה ובה 2 עמודות, עמודת הסכום ועמודת התלמיד, לכל תלמיד הסכום שלו.