• דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

איטיות ב SUM ב MYSQL

מתוזמן נעוץ נעול הועבר תכנות
11 פוסטים 4 כותבים 85 צפיות
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • י מנותק
    י מנותק
    יוס
    כתב ב נערך לאחרונה על ידי יוס
    #1

    משום מה כאשר אני משתמש ב SUM mysql (עם php)
    זה איטי יותר (משמעותית) מסתם שאילתה רגילה

    אני נתקל בזה כאשר אני רוצה ליצור דוח של כמה דפי גמרא נבחן תלמיד
    ולשם כך אני מריץ לולאה על טבלת התלמידים
    ועל כל תלמיד אני מבצע שאילתת SUM כמה דפים יש לו בטבלת הבחינות

    -כאשר אני מבצע שאילתת SELECT רגילה זה לא לוקח זמן
    אבל כאשר זה שאילתה של SELECT (SUM) זה לוקח הרבה זמן

    אציין שמדובר בשרת עם 3 מעבדים ו 4GB זיכרון ראם

    השאלה שלי שאם יש סיבה שגורמת לאיטיות
    או שפשוט צריך משהוא חזק יותר?

    תודה רבה

    מערכת מכירות בכל ערוצי המכירה, טלפון-מייל-ואתר
    שיגור הודעות במחירים המשתלמים ביותר
    לפתיחת מערכת https://app.ipsales.co.il/

    OdedDvirO תגובה 1 תגובה אחרונה
    0
  • OdedDvirO מנותק
    OdedDvirO מנותק
    OdedDvir
    השיב ליוס ב נערך לאחרונה על ידי OdedDvir
    #2

    @יוס אמר באיטיות ב SUM ב MYSQL:

    ולשם כך אני מריץ לולאה על טבלת התלמידים
    ועל כל תלמיד אני מבצע שאילתת SUM כמה דפים יש לו בטבלת הבחינות

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

    ח תגובה 1 תגובה אחרונה
    7
  • ח מנותק
    ח מנותק
    חוקר
    כתב ב נערך לאחרונה על ידי
    #3

    לכאורה שאילתה עם gruop by תעשה לך את העבודה ללא לולאה.
    ובכל מקרה, אם יש בעיות אז לדעתי זה באינדקס.
    תבדוק שיש לך אינדקס על העמודה של מזהה התלמיד או משהו כזה איך שזה שמור אצלך.
    תבדוק ותעדכן.
    בהצלחה

    תגובה 1 תגובה אחרונה
    5
  • ח מנותק
    ח מנותק
    חוקר
    השיב לOdedDvir ב נערך לאחרונה על ידי
    #4

    @odeddvir אמר באיטיות ב SUM ב MYSQL:

    על פניו נראה לי כפילות מיותרת להשתמש בלולאה וגם בשאילתת קיבוץ ביחד

    להבנתי הוא לא השתמש בקיבוץ שהרי לכן הוא עשה לולאה.
    @יוס אם יהיו כאן פרטי השדות יהיה קל יותר להמחיש שאילתה עם קיבוץ

    תגובה 1 תגובה אחרונה
    3
  • י מנותק
    י מנותק
    יוס
    כתב ב נערך לאחרונה על ידי יוס
    #5

    תודה על ההיענות

    אני מצרף דוגמה למה שאני מבצע

    $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) בטבלת התלמידים

    תודה רבה

    מערכת מכירות בכל ערוצי המכירה, טלפון-מייל-ואתר
    שיגור הודעות במחירים המשתלמים ביותר
    לפתיחת מערכת https://app.ipsales.co.il/

    ח תגובה 1 תגובה אחרונה
    0
  • ח מנותק
    ח מנותק
    חוקר
    השיב ליוס ב נערך לאחרונה על ידי חוקר
    #6

    @יוס אמר באיטיות ב SUM ב MYSQL:

    מזהה התלמיד

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

    SELECT SUM(`score`), `pupil` FROM `score`GROUP BY `pupil`
    

    כך תקבל בשאילתה אחת טבלה ובה 2 עמודות, עמודת הסכום ועמודת התלמיד, לכל תלמיד הסכום שלו.

    clickoneC תגובה 1 תגובה אחרונה
    5
  • clickoneC מנותק
    clickoneC מנותק
    clickone
    השיב לחוקר ב נערך לאחרונה על ידי
    #7

    @חוקר זה בהנחה שיש לכל תלמיד לפחות רשומה אחת בנקודות, אחרת תלמידים ללא רשומות בנקודות, לא יופיעו אא"כ הוא יעשה JOIN לטבלת התלמידים הראשית

    אין טסט כמו פרודקשן.

    המייל שלי urivpn@gmail.com

    תגובה 1 תגובה אחרונה
    6
  • י מנותק
    י מנותק
    יוס
    כתב ב נערך לאחרונה על ידי
    #8

    @חוקר אמר באיטיות ב SUM ב MYSQL:

    SELECT SUM(score), pupil FROM scoreGROUP BY pupil

    ממש תודה אכן "טס" במהירות

    מערכת מכירות בכל ערוצי המכירה, טלפון-מייל-ואתר
    שיגור הודעות במחירים המשתלמים ביותר
    לפתיחת מערכת https://app.ipsales.co.il/

    ח תגובה 1 תגובה אחרונה
    1
  • ח מנותק
    ח מנותק
    חוקר
    השיב ליוס ב נערך לאחרונה על ידי
    #9

    @יוס אמר באיטיות ב SUM ב MYSQL:

    ממש תודה אכן "טס" במהירות

    אבל עשית גם אינדקס או שזה עוד לפני האינדקס?

    י תגובה 1 תגובה אחרונה
    1
  • י מנותק
    י מנותק
    יוס
    השיב לחוקר ב נערך לאחרונה על ידי
    #10

    @חוקר לא עשיתי אינדקס

    מערכת מכירות בכל ערוצי המכירה, טלפון-מייל-ואתר
    שיגור הודעות במחירים המשתלמים ביותר
    לפתיחת מערכת https://app.ipsales.co.il/

    ח תגובה 1 תגובה אחרונה
    0
  • ח מנותק
    ח מנותק
    חוקר
    השיב ליוס ב נערך לאחרונה על ידי
    #11

    @יוס אמר באיטיות ב SUM ב MYSQL:

    @חוקר לא עשיתי אינדקס

    באפשרותך להריץ קוד חד פעמי שיצור לך אינדקס על העמודה ובכך להקל משמעותית על השרת, כאשר הוא יבצע מעתה שאילתאות המסוננות או מקבוצות לפי pupil

    ALTER TABLE `score` ADD INDEX(`pupil`);
    
    תגובה 1 תגובה אחרונה
    3

  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.