סטטיסטיקה על עמודות לא מאונדקסות

יום רביעי, ספטמבר 15, 2010

SQL Server שומר מידע סטטיסטי לגבי עמודות בטבלאות: בדרך כלל, בעת שמתבצעת לראשונה שליפה עם תנאי Where על עמודה-המערכת מחשבת סטטיסטיקה לגביה, ועושה בה שימוש בהמשך ליעול השליפות. הסטטיסטיקה היא מידע לגבי התפלגות הנתונים לפי טווחים, כלומר- היסטוגרמה (לא גרף אלא טבלה שניתנת לתיאור גרפי כהיסטוגרמה), ובה עד 200 שורות. אלו לא הנתונים המדוייקים – בשביל זה יש טבלה – אלא תצוגה סיכומית שמאפשרת להעריך כיצד הנתונים מפוזרים. למשל- אם יש טבלת עובדים ובה עמודת גובה, הסטטיסטיקה תאפשר למערכת לדעת שמעט עובדים יכולים להיות בגובה 200 ס"מ, ושמספר רב של עובדים הם בין 160 ס"מ ל-170 ס"מ. כמובן שהמערכת אינה פטורה...

Execution Plan: שליפה, פילטר ומיון בעזרת אינדקס

יום רביעי, יוני 23, 2010

נפתח בדוגמה- נציג את ה-Actual Execution Plan יל ידי Ctrl M ונריץ את הקוד הבא: Use AdventureWorks; Go Set Statistics IO On; Select ProductID From Production.TransactionHistoryArchive; Go בלשונית Messages נקבל את הפלט הבא פחות או יותר- (89253 row(s) affected) Table 'TransactionHistoryArchive'. Scan count 1, logical reads 124, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. בהרצה הראשונה יתכן ויהיו physical reads מכיוון שיש לקרוא את ה-Pages הרלוונטיים ל-Buffer, אך לאחר מכן הם יעלמו והקריאה תהיה רק מה-Buffer (מתבטא ב-Logical Reads). Scan count שווה 1 מכיוון שהתבצע Scan אחד של כל האינדקס, כפי שניתן לראות...