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

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

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

אינדקסים ב SQL

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

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

    מצאתי מדריך ראשוני די מוצלח, (וגם משהו בעברית שמסביר את המבנה).

    אני רוצה לדעת עוד קצת לגבי ביצוע בפועל ב SQL SERVER, על מה כדאי לעשות אינדקס, על מה לא מומלץ, האם לכלול עוד שדות או לא? וכו' וכו'.

    אשמח שהמומחים דפה, יחכימו אותי מנסיונם העשיר!

    כמו"כ יש שמה כמה שורות שלא הבנתי:

    Queries

    Another consideration when setting up indexes is how the database will be queried. As mentioned above, you must take into account the frequency of data modifications. In addition, you should consider the following guidelines:

    Try to insert or modify as many rows as possible in a single statement, rather than using multiple queries.

    Create nonclustered indexes on columns used frequently in your statement’s predicates and join conditions.

    Consider indexing columns used in exact-match queries.

    אשמח לקבל הסבר על זה,
    תודה רבה!

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

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

      בגלל שSQL זה טכנולוגיה בוגרת ועדיין רלוונטית, זה נושא שיש עליו המון חומר גם בעברית,
      אני מביא לך כמה לינקים רלוונטיים לשאלה:
      http://blogs.microsoft.co.il/gerireshef/2010/11/29/אינדקסים-וספריית-אוניברסיטת-חיפה/
      https://internet-israel.com/מדריכים/mysql-מדריכים/אופטימיזציה-בסיסית-של-mysql/
      http://www.softwarearchiblog.com/2018/08/mysql-storage-engines.html

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

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

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

        @dovid

        1. תודה רבה!

        2. הקישור הראשון זה תאוריה יותר, שכבר קראתי הרבה...
          הקישור השני זה נחמד, את רוב הכללים כבר ידעתי, אבל הוא חידש לי כמה דברים.
          הקישור השלישי נשמע לי עמוק מידי, מה גם שאני לא יודע אם זה תקף ל MSSQL.

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

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

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

          @WWW הלינק הראשון הכי חשוב וכל השאר מיותר.
          עם קצת מחשבה תבין לבד את כל הכללים.
          אין שום הבדל בין MSSQL ובין MYSQL ברמת התיאוריה, וברמה המעשית זה פרטים שוליים שלא נתקלים בהם כל יום.

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

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

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

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

            אוי @dovid מה אני אגיד לך...
            לא כולם חכמים כמוך...
            אין לי כח לעשות פה לומדות ולהבין דבר מתוך דבר, וזה לא בא לי בקלות 😞

            בכל מקרה, אני מחפש יותר כללים יבשים (כמו 'שדה שמסננים אותו הרבה חייבים לכלול באינדקס', וכדו').
            וכן הדרכה מעשית על MSSQL, איך עושים את זה.

            שדה תנאי התכוונתי לשדה שבד"כ מסננים לפי זה.
            ושדה מיון התכוונתי שדה שבד"כ ממיינים את התוצאות לפי השדה הזה (טקסט).

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

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

              @WWW בקשר לשדה תנאי ומיון, בטוח לשניהם צריך לעשות.
              מתי לעשות ומה?
              בגדול,כל שדה/קבוצת שדות, שממיינים או מסננים על פיהם לעיתים קרובות, והחיפוש/מיון בו מתבסס על מתחיל ב נגמר ב וק"ו שווה ל, כדאי לעשות אינדקס.
              קבוצת שדות הכונה למשל שבפעמים שמחפשים/מסננים על פיהם כל הקבוצה תופיע בתנאי או במיון.

              אני בכל אופן הרצתי חיפוש באינטרנט "sql index rule of thumb"
              אנשים מציינים את הדברים הבאים:

              • בד"כ אינדקס נותן תועלת משמעותית רק כשמתשאלים 1. אחוז קטן מהתוצאות (10% ופחות מגודל הטבלה) 2. הטבלה גדולה מאוד 3. יש שונות גבוהה בערכים המאונדקסים (למשל זכר נקבה זה שתי ערכים אז זו שונות נמוכה מאוד מאוד).
              • לא ליצור אינדקס אם לא נראית או צפויה בעיה (כלומר קודם שיהיה לאט ואז נדבר - אז גם אפשר לבדוק מייד אם הייתה התייעלות)
              • הכתיבות לטבלה וסבלים מביצועים נמוכים ככל שיש יותר אינדקסים. במיוחד יש לשקול זאת בטבלה עם ריבוי כתיבות.

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

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

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

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

                @dovid תודה רבה, לזה חיכיתי!

                כעת לשאלה שלי:

                • יש לי טבלה שאמורה להיות כבדה, נגיד 50,000 רשומות, ועיקר האפליקציה זה קריאה מהטבלה הזאת.
                  יש בטבלה כ 15 שדות.
                • עדכון לטבלה מתבצע רק ע"י המנהל, וזה בד"כ בעיקר הוספה של הרבה רשומות בבת אחת (ע"י סקריפט שמכניס אחד אחרי השני לאחר בדיקה).
                • כמעט תמיד השאילתא תריץ תנאי ששדה 'א' (INT) שווה X. וזה אמור לשלוף כ 3000 רשומות בתנאי הזה (לרוב השאילתה מוגבלת ל TOP 100 רשימות, אבל הבנתי שזה לא עוזר כלום).
                • לרוב המיון יהיה לפי ביטוי מורכב (זו שאלה בפנ"ע אם זה כדאי) שזה ['שם משפחה' + ' ' + 'שם פרטי'].
                • אני נותן אופציה ללקוח למיין לפי כל שדה בטבלה, וכן לסנן לפי כל שדה כולל סינון מקונן (בד"כ הסינון 'שווה').
                • בינתיים אין אינדקסים (חוץ ממפתח ראשי) ואני לא רואה איטיות (יש כ3000 רשומות כרגע בטבלה).

                מה היית ממליץ לעשות?

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

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

                  @WWW ב3000 אתה לא אמור להיות באיטיות

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

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

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

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

                    @clickone אמר באינדקסים ב SQL:

                    אם הצפי ל30 או 300 אלף רחוק אז לגמרי הייתי ממתין
                    אם הוא ממש קרוב אז שווה לחשוב על זה כבר עכשיו

                    כפי שכתבתי הטבלה אמורה לגדול עד ל 50,000 נגיד.

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

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

                      @WWW עדיף שתשתף אותנו כשזה כבר יהיה מספיק גדול למדידות (נגיד ב10K).
                      אין לך מה להפסיד מלחכות כי אינדקסים זה שקוף לגמרי מבחינת התנהגות המסד והתוכנה שלך.

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

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

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

                        @dovid אמר באינדקסים ב SQL:

                        @WWW עדיף שתשתף אותנו כשזה כבר יהיה מספיק גדול למדידות (נגיד ב10K).

                        זה יקח כמה שנים 🙂

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

                        לא הבנתי.

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

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

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

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

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