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

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

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

הפורום כעת לקריאה בלבד, לקריאה נוספת.

ייעול שאילתת MYSQL

מתוזמן נעוץ נעול הועבר תכנות
15 פוסטים 3 כותבים 737 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD
    dovidD
    dovid
    ניהול
    כתב ב נערך לאחרונה על ידי dovid
    #6

    @WWW עזוב שניה ביצועים, מה זה השאילתה המסובכת וההזויה הזאת?
    למה לא פשוט:

    SELECT
      cdr.t_user,
      grp.group_id,
      sum(cdr.elapsed) / 60 as sum,
      COUNT(cdr.id) as count
    FROM cdr 
    INNER JOIN re_grp as grp ON grp.reg_exp = cdr.t_user
    WHERE 
       cdr.end_ts > UNIX_TIMESTAMP('2023-7-1 00:00:00') AND
       cdr.end_ts < UNIX_TIMESTAMP('2023-7-2 00:00:00') AND
       cdr.elapsed < 7200 AND
       grp.group_id = "14"
    GROUP BY cdr.t_user
    HAVING  sum(cdr.elapsed) > 100
    

    זה לא מה שאתה צריך?

    • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
    • בכל נושא אפשר ליצור קשר dovid@tchumim.com
    WWWW תגובה 1 תגובה אחרונה
    3
    • dovidD dovid

      @WWW עזוב שניה ביצועים, מה זה השאילתה המסובכת וההזויה הזאת?
      למה לא פשוט:

      SELECT
        cdr.t_user,
        grp.group_id,
        sum(cdr.elapsed) / 60 as sum,
        COUNT(cdr.id) as count
      FROM cdr 
      INNER JOIN re_grp as grp ON grp.reg_exp = cdr.t_user
      WHERE 
         cdr.end_ts > UNIX_TIMESTAMP('2023-7-1 00:00:00') AND
         cdr.end_ts < UNIX_TIMESTAMP('2023-7-2 00:00:00') AND
         cdr.elapsed < 7200 AND
         grp.group_id = "14"
      GROUP BY cdr.t_user
      HAVING  sum(cdr.elapsed) > 100
      

      זה לא מה שאתה צריך?

      WWWW
      WWWW
      WWW
      כתב ב נערך לאחרונה על ידי
      #7

      @dovid צודק, לא אני כתבתי את השאילתא... בכל מקרה זה לוקח אותו זמן...

      WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

      dovidD תגובה 1 תגובה אחרונה
      0
      • WWWW WWW

        @dovid צודק, לא אני כתבתי את השאילתא... בכל מקרה זה לוקח אותו זמן...

        dovidD
        dovidD
        dovid
        ניהול
        כתב ב נערך לאחרונה על ידי dovid
        #8

        @WWW כתב בייעול שאילתת MYSQL:

        בכל מקרה זה לוקח אותו זמן...

        תוכל לצרף EXPLAIN עדכני לשאילתה שניסחתי?

        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
        WWWW תגובה 1 תגובה אחרונה
        1
        • dovidD dovid

          @WWW כתב בייעול שאילתת MYSQL:

          בכל מקרה זה לוקח אותו זמן...

          תוכל לצרף EXPLAIN עדכני לשאילתה שניסחתי?

          WWWW
          WWWW
          WWW
          כתב ב נערך לאחרונה על ידי
          #9

          @dovid

          -> Limit: 200001 row(s)  (actual time=31750.842..31750.842 rows=0 loops=1)
              -> Filter: (sum(cdr.elapsed) > 100)  (actual time=31750.837..31750.837 rows=0 loops=1)
                  -> Table scan on <temporary>  (actual time=0.004..0.005 rows=1 loops=1)
                      -> Aggregate using temporary table  (actual time=31750.451..31750.453 rows=1 loops=1)
                          -> Nested loop inner join  (cost=3766093.75 rows=46610) (actual time=22060.691..31750.388 rows=1 loops=1)
                              -> Filter: ((cdr.end_ts > <cache>(unix_timestamp('2023-7-1 00:00:00'))) and (cdr.end_ts < <cache>(unix_timestamp('2023-7-2 00:00:00'))) and (cdr.elapsed < 7200) and (cdr.t_user is not null))  (cost=3049122.50 rows=932200) (actual time=22042.090..31708.494 rows=11270 loops=1)
                                  -> Table scan on cdr  (cost=3049122.50 rows=25176946) (actual time=1.345..29896.727 rows=26187820 loops=1)
                              -> Filter: (grp.group_id = 14)  (cost=0.67 rows=0) (actual time=0.004..0.004 rows=0 loops=11270)
                                  -> Single-row index lookup on grp using unique_index (reg_exp=cdr.t_user), with index condition: (grp.reg_exp = cdr.t_user)  (cost=0.67 rows=1) (actual time=0.003..0.003 rows=1 loops=11270)
          
          

          אבל זה בלי אינדקס כרגע על CDR.

          WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

          תגובה 1 תגובה אחרונה
          0
          • dovidD
            dovidD
            dovid
            ניהול
            כתב ב נערך לאחרונה על ידי dovid
            #10

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

            • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
            • בכל נושא אפשר ליצור קשר dovid@tchumim.com
            WWWW תגובה 1 תגובה אחרונה
            1
            • dovidD dovid

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

              WWWW
              WWWW
              WWW
              כתב ב נערך לאחרונה על ידי
              #11

              @dovid את האמת, שיש לי פה בעיה עם אינדקס, הטבלה מיועדת 99% לכתיבה...
              כנראה מה שאני אעשה בסוף: טבלת מראה בDB אחר עם אינדקסים שיתעדכן פעם בשעה.
              השאלה אם האינדקסים יעזור.
              אני לא יכול לעשות יותר מידי טסטים כי זה נועל את הטבלה.

              WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

              תגובה 1 תגובה אחרונה
              0
              • dovidD
                dovidD
                dovid
                ניהול
                כתב ב נערך לאחרונה על ידי
                #12

                אינדקס על end_ts לדעתי לא יאט את ההכנסות משמעותית,
                אבל זו אינטואיציה נטו,, אני די חלש במסדי נתונים.

                • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                תגובה 1 תגובה אחרונה
                1
                • dovidD
                  dovidD
                  dovid
                  ניהול
                  כתב ב נערך לאחרונה על ידי
                  #13

                  לפי הפלט שהבאת יש כמעט מיליון שורות מתאימות ליום בודד, זה הגיוני?

                  • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                  • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                  WWWW תגובה 1 תגובה אחרונה
                  0
                  • dovidD dovid

                    לפי הפלט שהבאת יש כמעט מיליון שורות מתאימות ליום בודד, זה הגיוני?

                    WWWW
                    WWWW
                    WWW
                    כתב ב נערך לאחרונה על ידי
                    #14

                    @dovid כתב בייעול שאילתת MYSQL:

                    לפי הפלט שהבאת יש כמעט מיליון שורות מתאימות ליום בודד, זה הגיוני?

                    לא.

                    WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                    תגובה 1 תגובה אחרונה
                    0
                    • dovidD
                      dovidD
                      dovid
                      ניהול
                      כתב ב נערך לאחרונה על ידי
                      #15

                      @WWW סליחה, אני לא יודע לקרוא טוב את הEXPLAIN, כנראה זה 11 אלף בלבד.

                      • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                      • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                      תגובה 1 תגובה אחרונה
                      1

                      שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

                      נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

                      בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

                      הרשמה התחברות
                      תגובה
                      • תגובה כנושא
                      התחברו כדי לפרסם תגובה
                      • מהישן לחדש
                      • מהחדש לישן
                      • הכי הרבה הצבעות


                      בא תתחבר לדף היומי!
                      • התחברות

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