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

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

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

מתי להגדיר אינדקס במסד נתונים

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

    איך לדעת על איזה שדות כדאי להגדיר אינדקס? אני משתמש בmysql.

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

    אשמח למידע
    (יש לי מסד נתונים קיים שהתחיל לגדול, והבנתי שכדאי לי למטב אותו בשביל לייעל את הביצועים)

    אבייא תגובה 1 תגובה אחרונה
    0
    • מוטי מןמ מוטי מן

      איך לדעת על איזה שדות כדאי להגדיר אינדקס? אני משתמש בmysql.

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

      אשמח למידע
      (יש לי מסד נתונים קיים שהתחיל לגדול, והבנתי שכדאי לי למטב אותו בשביל לייעל את הביצועים)

      אבייא
      אבייא
      אביי
      כתב ב נערך לאחרונה על ידי אביי
      #2

      @מוטי-מן אני לא יודע אם יש בזה כללים ברורים,

      אבל אני עושה אינדקס בד"כ על שדות שאני משתמש בהם הרבה בLEFT JOIN, ORDER, GROUP וכמובן WHERE, אני לא עושה את זה תמיד, אלא רק שדות שמשמשים בכמה שאילתות שמתבצעות בתדירות,

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

      לגבי אינדקסים על שדות בוליאנים, אני לא יודע,

      ניתן ליצור עימי קשר 8140hp+t@gmail.com | קטלוג מוצרים
      abaye.co

      תגובה 1 תגובה אחרונה
      1
      • yossizY
        yossizY
        yossiz
        כתב ב נערך לאחרונה על ידי
        #3

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

        • שאילתה שמחזירה את רוב שורות הטבלה (גם עם אינדקס אתה בכל מקרה קורא את רוב הטבלה)
        • שאילתה שמחזירה כמה שורות לפי מפתח ראשי עם WHERE על עמודה נוספת (גם בלי אינדקס על העמודה המסננת, שליפת שורה לפי מפתח ראשי הוא מהיר)

        אני ממליץ בשלב הזה לטפל נקודתית בשאילתות שאתה רואה שהם איטיים, ולבדוק אם אפשר לשפר אותם על ידי אינדקס ולא סתם לחפש ליצור אינדקסים
        לפעמים AI מצליח לענות תשובה נכונה אם אתה שואל אותו "איזה אינדקס כדאי לעשות לשפר את הביצועים של שאילתה זו"

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה
        👈 רוצים כתובת מייל בעברית? כנסו למייל.קום 👉

        תגובה 1 תגובה אחרונה
        7
        • yossizY
          yossizY
          yossiz
          כתב ב נערך לאחרונה על ידי
          #4

          לגבי אינדקס על שדה בוליאני: זה כדאי רק במקרה שהסינון על העמודה יחזיר רק מיעוט מהשורות (רוב המוחלט של השורות הוא true או false) וכדאי לאנדקס רק השורות עם הערך הפחות נפוץ (true או false), דהיינו להוסיף where לפקודה של יצירת האינדקס
          עיין https://stackoverflow.com/a/42972924

          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה
          👈 רוצים כתובת מייל בעברית? כנסו למייל.קום 👉

          אבייא תגובה 1 תגובה אחרונה
          1
          • yossizY yossiz

            לגבי אינדקס על שדה בוליאני: זה כדאי רק במקרה שהסינון על העמודה יחזיר רק מיעוט מהשורות (רוב המוחלט של השורות הוא true או false) וכדאי לאנדקס רק השורות עם הערך הפחות נפוץ (true או false), דהיינו להוסיף where לפקודה של יצירת האינדקס
            עיין https://stackoverflow.com/a/42972924

            אבייא
            אבייא
            אביי
            כתב ב נערך לאחרונה על ידי אביי
            #5

            @yossiz כתב במתי להגדיר אינדקס במסד נתונים:

            דהיינו להוסיף where לפקודה של יצירת האינדקס

            טוב לדעת, לא ידעתי שאפשרי,
            (אני בד"כ לא מאנדקס אותם בכלל, כי זה כמעט תמיד נוטה לצד הtrue)

            ניתן ליצור עימי קשר 8140hp+t@gmail.com | קטלוג מוצרים
            abaye.co

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

              נדיר שיאנדקסו שדה בוליאני בפני עצמו, מהסיבה ש@yossiz הזכיר,
              אבל שכיח שהשדה הוא חלק מאינדקס המורכב מכמה שדות.
              אינדקס מורכב זה כמו אינדקס רגיל אבל מכמה שדות יחד, וזה מועיל בעיקר לשאילתה בה הwhere מתייחס אל שדות אלו יחד בand.

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

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

                תגובה 1 תגובה אחרונה
                0
                • nigunN
                  nigunN
                  nigun
                  כתב ב נערך לאחרונה על ידי
                  #8

                  מייל: nigun@duck.com

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

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

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

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

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


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

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

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