סטטיסטיקה: עדכון וקבלת החלטות

יום רביעי, אפריל 13, 2016

הפוסט שלהלן ממחיש את השימוש בסטטיסטיקה על ידי המערכת לבחירת ה-Execution Plan, ואת השפעתה של סטטיסטיקה לא מעודכנת על שימוש זה ואיכות הבחירה. בעזרת טבלת sys.messages (טבלת מערכת בת כ-250,000 שורות) אבנה טבלה עם נתונים היסטוריים, כלומר- אכניס את תוכן טבלת המערכת לטבלה שאבנה, בתוספת תאריך: If Object_ID('T_Messages','U') Is Not Null Drop Table T_Messages; Create Table T_Messages ( DateTime Not Null, message_id Int Not Null, language_id Int Not Null, ...

בחירה בין Nested Loops, Merge Join, Hash Match בביצוע Join בין טבלאות

יום שבת, פברואר 22, 2014

כשמתבצע Join בין טבלאות – המערכת יכולה לבחור באחד משלושה אלגוריתמים לביצוע המשימה באופן פיזי: Nested Loops יתבצע כשיש לפחות טבלה אחת קטנה ובשניה יש אינדקס שמקל על החיפוש, ואז עבור כל שורה בראשונה – היא תחפש התאמות בשניה. Merge Join שהוא האלגוריתם הכי יעיל יתבצע כששתי הטבלאות ממויינות או בעלות אינדקס מתאים, ואז המערכת עוברת במקביל על שתי הטבלאות ומחפשת התאמות. Hash Match שהוא האלגוריתם הפחות יעיל יתבצע כשאין אינדקסים להיעזר בהם והטבלאות אינן ממויינות; ואז המערכת תחלק כל טבלה לקבוצות לפי שיטה מסויימת, ותחפש התאמות בין קבוצות מתאימות (מן הסתם תבצע בינהן Nested Loops). להלן דוגמה...
אין תגובות

השפעת האינדקסים על ביצוע Join בין טבלאות

יום חמישי, ינואר 26, 2012

כיצד המערכת מבצעת Join ומה השפעת האינדקסים ומספר הרשומות על כך? בהמשך לפוסט הקודם- אנתח מספר דוגמאות מבחינת התוכנית שהמערכת תבחר ולא מבחינת הביצועים, והן יתבססו על הטבלאות והאינדקסים שיצרנו בפעם הקודמת: --1. No Indexes Select * Into messages From sys.messages; Go   --2. Clustered Primary Key on message_id,language_id Select * Into messages_ClstInd From ...

השפעת האינדקס על חיפוש בטבלה

יום ראשון, ספטמבר 19, 2010

ניצור טבלה- בשלב ראשון ללא אינדקס: Use tempdb; Go If object_id('SalesOrderDetail') Is Not Null Drop Table SalesOrderDetail; Go Create Table SalesOrderDetail(SalesOrderID int, SalesOrderDetailID int, CarrierTrackingNumber nvarchar(25) NULL, ...