27-03-2009, 13:03
|
מנהל
|
|
חבר מתאריך: 26.07.08
הודעות: 6,473
|
|
כשאתה מציין אינדקס על טור בטבלה, למעשה אתה אומר ל-mysql (או לכל מסד אחר) לשמור את המידע השייך לטור הזה בבלוק זיכרון נוסף, שהוא נפרד מהתחום זיכרון שבו נמצאת הטבלה.
לכן כשמריצים שאילתות SELECT על טור שהוא אינדקס, מסד הנתונים יעשה את החיפוש בקובץ אחר במקום לבצע סריקה של הטבלה כולה. זה אמור לייעל את זמן הרצת שאילתות SELECT.
לעומת זאת, שאילתות INSERT או UPDATE או DELETE, ייקחו קצת יותר זמן כיוון שצריך לעדכן גם את האינדקס בהתאם.
צריך לדעת למצוא את האיזון הנכון...
כמובן שאין צורך לעשות אינדקס על כל טור בטבלה, אלא רק על הטורים שאתה מבצע עליהם חיפוש. זה לא מדויק, כי לפעמים מבצעים חיפוש כמעט על כל הטורים בטבלה, במצבים מסוימים... כאן אני חושב שבמידה ותשתמש באינדקס עבור טור אחד, MYSQL יבצע קודם כל את החיפוש עליו כיוון שהוא אינדקס, ורק לאחר מכן יאמת את הטורים האחרים שנמצאים ב-WHERE (טורים שאינם אינדקס).
מה שסימנת בעיגול זה אינדקס שמסדר את הערכים בתוכו בצורת עץ B-TREE (בדר"כ, אלא אם ציינת אחרת)
תראה כאן: http://www.google.co.il/search?hl=i...f&oq=MYSQL+inde
מקווה שתתקנו אותי אם טעיתי, תודה.
|