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

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

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

שמירת נתונים בטבלה א הנמצאים בטבלה ב

מתוזמן נעוץ נעול הועבר תכנות
12 פוסטים 5 כותבים 169 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • MusiCodeM מנותק
    MusiCodeM מנותק
    MusiCode
    כתב ב נערך לאחרונה על ידי
    #2

    גם אני אשמח לדעת את התשובה.
    יש לי טבלה עם 20 מליון שורות שאני רוצה לעשות מוניפולציות והשוואות...

    מניח שזה בכיוון של "תאנדקס את א' וב' וג' ".

    אולי יש DB שמתאים לזה יותר מאשר MySQL?

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

      @חוקר אמר בשמירת נתונים בטבלה א הנמצאים בטבלה ב:

      לבצע שאילתאות ממוזגות יכול ליצור בלגן גדול בשרת כי זה טבלה של מעל 60K מנויים ומעל 4.5G השתתפויות.

      לא הבנתי. JOIN פשוט אמור לעשות את העבודה מצויין.

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

        @dovid אמר בשמירת נתונים בטבלה א הנמצאים בטבלה ב:

        לא הבנתי. JOIN פשוט אמור לעשות את העבודה מצויין.

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

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

          @חוקר אמר בשמירת נתונים בטבלה א הנמצאים בטבלה ב:

          יש לי טבלת מנויים, בין העמודות מופיע עמודה מצב אישי (אברך/בחור/ילד/אשה/נערה וכו'), קוד מוסד לימודים, וכדומה.
          טבלה שניה של ההשתתפות בתוכנית.
          אני מתמקד למשל בישיבה על קברו שכל יום נוספים אלפי שורות לטבלת ההשתתפות.
          ברצוני אפשרות למיין תוצאות על פי מגדרים, וכדומה.
          לבצע שאילתאות ממוזגות יכול ליצור בלגן גדול בשרת כי זה טבלה של מעל 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 שלהם נמצא בתת השאילתא, וגם שהם עונים לסינונים הנוספים שלך.

          מקווה שהובנתי, אם לא - תשאל

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

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

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

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

              select count(id), city from usersAnswers
              GROUP BY city
              

              בשתי טבלאות זה יחייב JOIN

              ח A 2 תגובות תגובה אחרונה
              0
              • ח מנותק
                ח מנותק
                חוקר
                השיב לחוקר ב נערך לאחרונה על ידי
                #8
                פוסט זה נמחק!
                תגובה 1 תגובה אחרונה
                0
                • A מנותק
                  A מנותק
                  avr416
                  השיב לחוקר ב נערך לאחרונה על ידי
                  #9

                  @חוקר אני לא מכיר את הפריימוורק הזה, אבל האם זה לא מאפשר לך להכניס שאילתות ישירות לדטה בייס ולעקוף את הORM?
                  באנטיטי פריימוורק למשל יש אפשרות כזאת וגם בכל הORM שאני מכיר.. אז אני לא יודע במה הם משתמשים אבל אני מניח שיש אפשרות כזאת.

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

                  אבל שוב, אני לא מכיר את הפריימווורק הזה 😞

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

                    @avr416 אמר בשמירת נתונים בטבלה א הנמצאים בטבלה ב:

                    (וכמובן אלף פעמים לשים לב לאבטחה ולניקוי קלט של משתמש!!)

                    בימות, ובאסטריסק כללי, אין הזרקת SQL...

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

                      @MusiCode אמר בשמירת נתונים בטבלה א הנמצאים בטבלה ב:

                      בימות, ובאסטריסק כללי, אין הזרקת SQL...

                      בממשק ללקוחות..

                      תגובה 1 תגובה אחרונה
                      1
                      • WWWW מנותק
                        WWWW מנותק
                        WWW
                        השיב לMusiCode ב נערך לאחרונה על ידי
                        #12

                        @MusiCode אמר בשמירת נתונים בטבלה א הנמצאים בטבלה ב:

                        @avr416 אמר בשמירת נתונים בטבלה א הנמצאים בטבלה ב:

                        (וכמובן אלף פעמים לשים לב לאבטחה ולניקוי קלט של משתמש!!)

                        בימות, ובאסטריסק כללי, אין הזרקת SQL...

                        ככה נראה לך?

                        אם אתה דואג לחסום פיירוול, אתה צודק.

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

                        תגובה 1 תגובה אחרונה
                        0

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

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

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