שאלה בסיסית באינדוקס מסד נתונים
-
אם אני צריך לגשת הרבה לטבלה, והתנאי חיפוש הוא לפי שתי שדות.
כלומר אני מחפש רשומות ששתי שדות בהן מתאימות לתנאים שלי (מסוג Int).האינדקס שאני צריך לעשות בכזה מקרה הוא אינדקס אחד שמכיל את שתי השדות. נכון?
ולא שתי אינדקסים של כל שדה בנפרד.
אני צודק?@מנצפך שאלה בסיסית, והתשובה מורכבת.
אינדוקס נכון הוא אחת המלאכות המאתגרות בבסיס נתונים.התשובה הזהירה שלי היא שזה תלוי באופי של המערכת, ובמבנה השאילתות הנפוצות שלך, מה מופיע בתנאי WHERE ו-GROUP BY.
באופן כללי, אם הגישה לרשומה היא תמיד על פי שני השדות, ודאי אינדקס משותף עדיף מאשר שניים נפרדים.
אם לפעמים ניגשים לרשומות על פי אינדקס אחד מהשניים, עדיין יתכן שעדיף אינדקס משותף, אלא שסדר האינדקסים במפתח המשותף חשוב על מנת לאפשר גישה דרך האינדקס ולא לייבא את כל הטבלה. יש לציין את השדה שאליו ניגשים בנפרד כראשון ברשימת השדות באינדקס המשותף.הנה הסבר קצר על העניין: https://use-the-index-luke.com/sql/where-clause/the-equals-operator/concatenated-keys
והנה תשובה מפורטת מסטאק: https://stackoverflow.com/a/179224