logo

יצירת אינדקס ב-DBMS

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

מבנה האינדקס:

ניתן ליצור אינדקסים באמצעות כמה עמודות של מסד נתונים.

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

שיטות יצירת אינדקס

אינדקס DBMS ב-DBMS

מדדים מסודרים

המדדים ממוינים בדרך כלל כדי להפוך את החיפוש למהיר יותר. המדדים הממוינים ידועים בתור מדדים מסודרים.

דוגמא : נניח שיש לנו טבלת עובדים עם אלפי רשומות וכל אחד מהם הוא באורך 10 בתים. אם תעודות הזהות שלהם מתחילות ב-1, 2, 3... וכן הלאה ועלינו לחפש תלמיד עם ID-543.

  • במקרה של מסד נתונים ללא אינדקס, עלינו לחפש את בלוק הדיסק מההתחלה עד שהוא מגיע ל-543. ה-DBMS יקרא את הרשומה לאחר קריאת 543*10=5430 בתים.
  • במקרה של אינדקס, נחפש באמצעות אינדקסים וה-DBMS יקרא את הרשומה לאחר קריאת 542*2= 1084 בתים שהם פחות מאוד בהשוואה למקרה הקודם.

מדד ראשי

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

אינדקס צפוף

  • האינדקס הצפוף מכיל רשומת אינדקס עבור כל ערך מפתח חיפוש בקובץ הנתונים. זה הופך את החיפוש למהיר יותר.
  • בכך, מספר הרשומות בטבלת האינדקס זהה למספר הרשומות בטבלה הראשית.
  • זה צריך יותר מקום כדי לאחסן את רשומת האינדקס עצמו. לרשומות האינדקס יש את מפתח החיפוש ומצביע לרשומה בפועל בדיסק.
אינדקס DBMS ב-DBMS

מדד דליל

  • בקובץ הנתונים, רשומת האינדקס מופיעה רק עבור מספר פריטים. כל פריט מצביע על בלוק.
  • בכך, במקום להצביע על כל רשומה בטבלה הראשית, המדד מצביע על הרשומות בטבלה הראשית בפער.
אינדקס DBMS ב-DBMS

אינדקס אשכולות

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

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

אינדקס DBMS ב-DBMS

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

אינדקס DBMS ב-DBMS

אינדקס משני

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

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

אינדקס DBMS ב-DBMS

לדוגמה:

  • אם אתה רוצה למצוא את הרשומה של גליל 111 בתרשים, הוא יחפש את הערך הגבוה ביותר שהוא קטן או שווה ל-111 באינדקס הרמה הראשונה. זה יקבל 100 ברמה הזו.
  • ואז ברמת האינדקס השנייה, שוב זה עושה מקסימום (111)<= 111 and gets 110. now using the address 110, it goes to data block starts searching each record till 111. < li>
  • כך מתבצע חיפוש בשיטה זו. גם הכנסה, עדכון או מחיקה נעשים באותו אופן.