
05-08-2010, 17:24
|
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,778
|
|
האינדקס מאפשר לך לצמצם לזמן אפסי חיפוש של ערכים בשדה שעליו הוגדר האינדקס. על שדות אחרים האינדקס לא משפיע.
לכן אם יש לך שדה X ואתה מחפש את כל הרשומות שערכן 1 בשדה Y, האינדקס לא יעזור לך במאומה.
אגב, ניתן להגדיר יותר מאינדקס אחד בטבלה.
למקרה שתשאל: "אז למה שאני לא אגדיר אינדקס על כל השדות וזהו" ? התשובה היא: אין להגדיר סתם אינדקסים - משום שבכל פעם שהטבלה מעודכנת, צריך לעדכן את כל האינדקסים שמושפעים מהשינוי. ככל שיש לך יותר כאלה, זה לוקח יותר זמן...
כמו כן, אם אתה מוסיף כמות גדולה של רשומות לטבלה שיש בה אינדקסים, רצוי לעשות זאת בתוך טראנזקציה (transaction) אחת. הסיבה לכך היא שאם לא משתמשים בטראנזקציה, על כל INSERT, יחושב האינדקס מחדש. לעומת זאת בטראנזקציה, תוכנסנה כל השורות, ובסגירת הטראינזקציה, יחושב האינדקס רק פעם אחת מחדש. הרבה יותר יעיל, לא?
נ.ב. יש גם אינדקסים על שילוב של שדות - למשל אם אתה רוצה לעשות מיון מהיר לפי שם משפחה ואז לפי שם פרטי...
|