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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. איטיות ב SUM ב MYSQL

איטיות ב SUM ב MYSQL

מתוזמן נעוץ נעול הועבר תכנות
11 פוסטים 4 כותבים 155 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • י מנותק
    י מנותק
    יוס
    כתב ב נערך לאחרונה על ידי יוס
    #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
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום