אינדקס עוזר ל-SQL Server לאחזר נתונים משורות במהירות. אינדקסים פועלים כמו תוכן העניינים בתחילת הספרים, ומאפשרים לך לחפש במהירות את הדף שבו נושא נמצא. ללא אינדקסים, SQL Server צריך לסרוק את כל השורות בטבלה כדי למצוא רשומה.
ישנם שני סוגים של אינדקסים ב-SQL Server: אשכולות ולא אשכולות. גלה את ההבדל בין אינדקסים מקובצים ואינדקסים שאינם מקובצים ומדוע הם חשובים.
אינדקס מקובץ ב-SQL Server
באינדקס מקובץ, שורות נתונים מאוחסנות פיזית בצורה מסודרת בהתבסס על ערך המפתח. מכיוון שהאינדקס כולל את הטבלה והוא יכול לסדר שורות רק בסדר אחד, אתה יכול ליצור רק אינדקס מקבץ אחד לכל טבלה.
בעוד שהאינדקסים הופכים את אחזור שורות בטווח למהיר יותר, הצהרות INSERT ו-UPDATE עשוי להיות איטי מכיוון שמייעל השאילתות סורק את האינדקס לפי הסדר עד שהוא מוצא את אינדקס היעד.
אינדקס לא מקובץ ב-SQL Server
אינדקס לא מקובץ מכיל את ערכי המפתח שהערך שלהם הוא מצביע הנקרא איתור שורות. עבור טבלאות מקובצות (טבלאות עם אינדקס מקובץ), המצביע מצביע על מפתח באינדקס המקובץ שבתורו מצביע על השורה בטבלה. עבור שורות ללא אינדקס מקובץ, המצביע מצביע ישירות על שורת הטבלה.
כיצד ליצור אינדקס מקובץ ב-SQL Server
כאשר אתה יוצר טבלה עם מפתח ראשי, SQL Server יוצר אוטומטית מפתח אינדקס מקובץ על סמך המפתח הראשי הזה. אם אין לך מפתח ראשי, תוכל לבצע את ההצהרה הבאה כדי ליצור מפתח אינדקס מקובץ.
לִיצוֹר מקובץ אינדקס <אינדקסשֵׁם>
על שולחן <שם שולחן>(שם_עמודה)
בהצהרה זו, אתה מציין את שם האינדקס, שם הטבלה שבה תיצור אותה ושם העמודה לשימוש באינדקס.
אם תוסיף מפתח ראשי לטבלה שכבר יש לה אינדקס מקובץ, SQL Server יצור איתו אינדקס לא מקובץ.
כדי ליצור אינדקס אשכולות שאינו כולל את עמודת המפתח הראשי, תחילה עליך לבטל את אילוץ המפתח הראשי.
להשתמששם בסיס הנתונים
לשנותשולחן שם שולחן
יְרִידָהאילוץ pk_name
ללכת
הסרת אילוצי המפתח הראשי מסירה גם את האינדקס המקובץ ומאפשרת לך ליצור אחד מותאם אישית.
כיצד ליצור אינדקס לא מקובץ ב-SQL Server
כדי ליצור אינדקס לא מקובץ, השתמש במשפט הבא.
לִיצוֹראינדקס <אינדקסשֵׁם>
על שולחן <שם שולחן>(שם_עמודה)
אתה יכול גם להשתמש במילת המפתח NONCLUSTERED כך:
לִיצוֹר [לא מקובצים] אינדקס <אינדקסשֵׁם>
על שולחן <שם שולחן>(שם_עמודה)
הצהרה זו יוצרת אינדקס לא מקובץ בטבלה שתציין וכוללת את העמודה שציינת.
אם תרצה, תוכל למיין את העמודות בסדר עולה (ASC) או יורד (DESC).
לִיצוֹר [לא מקובצים] אינדקס <אינדקסשֵׁם>
על שולחן <שם שולחן>(שם_עמודה ASC/DESC)
באיזה אינדקס כדאי לבחור?
גם אינדקסים מקובצים ואינדקסים לא מקובצים משפרים את זמן השאילתה. אם רוב השאילתות שלך הן פעולות SELECT במספר עמודות בטבלה, האינדקסים המקובצים מהירים יותר. עם זאת, עבור פעולות INSERT או UPDATE, אינדקסים שאינם מקובצים הם מהירים יותר מכיוון שמייעל השאילתות יכול לאתר את העמודה ישירות מהאינדקס.
כפי שאתה יכול לראות, האינדקסים האלה עובדים הכי טוב עבור שאילתות SQL שונות. לכן רוב מסדי הנתונים של SQL ייהנו מלהכיל לפחות אינדקס מקובץ אחד ואינדקסים לא מקובצים עבור עמודות המתעדכנות באופן קבוע.
החשיבות של אינדקסים ב-SQL Server
אינדקסים מקובצים ואינדקסים לא מקובצים מובילים לביצועי שאילתות גבוהים יותר. כאשר אתה מפעיל שאילתה, כלי האופטימיזציה של השאילתות סורק את האינדקס עבור מיקום האחסון של שורה ולאחר מכן מאחזר מידע ממיקום זה. זה הרבה יותר מהיר מסריקת כל השורות בטבלה.
אתה יכול גם להשתמש באינדקסים לא מקובצים כדי לפתור מבוי סתום של חיפוש סימניות על ידי יצירת אינדקס לא מקובץ עבור עמודות שהשאילתות המעורבות ניגשות אליהן.