שיפור ביצועי Join עצמי

22/08/2014

Join עצמי הוא Join בין טבלה לעצמה, מן הסתם כדי להתאים סוג אחד של שורות לאחרות.המקרה הפשוט בו אטפל כאן הוא התאמה של 1:1 – שורה מכאן מול שורה מכאן. למשל- בטבלת נוכחות נרצה להתאים את ההגעה ליציאה בטבלת התחברות לאתר נרצה להתאים את ה-logins ל-logouts בטבלת המכירות נרצה להתאים את המכירות של כל סוכן למכירות בחודש הקודם או בחודש המקביל אשתקד לצורך השוואה בטבלת שערי מניות נרצה להתאים את השער של כל יום לזה הקודם כדי לחשב את השינוי באחוזים לפני כמה שנים החלטתי לשפר מעט את הספרדית שלי – אותה אני מכיר ברמה...
אין תגובות

הוספת תיעוד אוטומטי לפרוצדורות

11/08/2014

כשיוצרים או משנים פרוצדורה, צריך להוסיף לה תיעוד: מי שינה? מה שינה? מתי שינה?כמו שאתם מכירים את החבר’ה – כללים לחוד ומעשים לחוד: משנים פרוצדורות, לא מוסיפים איזו שורת הסבר, ואחר כך לך חפש מי עשה מה..בקיצור- טריגר פשוט שמוסיף לכל פרוצדורה הערה עם שם המשתמש והשעה המדוייקת מתי היא השתנתה. נכון שההערה אינה כוללת מידע לגבי טיב השינוי, אבל לפחות יהיה את מי להאשים.. Create Trigger TrgProc On Database For CREATE_PROCEDURE,ALTER_PROCEDURE AsDeclare @SQL Varchar(Max), @Ic Int, @Ia Int;Select ...
תגובה אחת

אינדוקס טבלאות עבור שליפות הכוללות מיון ותנאי שאינו שיוויון

07/08/2014

מה הבעייה שמצריכה כותרת כזו ארוכה? נתחיל ממה שאינו בעייה ונמשיך למה שכן.אם אנו נדרשים ליצור אינדקס עבור שליפה מהסוג הזה- Select ...From ...Where Col1=...Order By Col2; האינדקס יהיה על Col1 (עמודה ראשית) ו-Col2 (עמודה משנית),ועמודות נוספות שמופיעות בפסוקית ה-Select יופיעו ב-Include.המערכת תשלוף בעזרת  Index Seek רק את השורות העונות על התנאי של Col1,ולא תצטרך למיין אותן כי הן יהיו כבר ממויינות לפי Col2 (העמודה המשנית באינדקס).היכן ומתי כן יש בעייה? כאשר התנאי על Col1 אינו שיוויון (=) אלא אי שיוויון או In + רשימת ערכים וכו’; המערכת לא תוכל לנצל ביעילות את האינדקס הנ”ל: היא אמנם תגיע בקלות...
אין תגובות

אופטימיזציה של שליפות עם תנאים על תחומים

03/08/2014

אב”ג פרסם לאחרונה שני פוסטים העוסקים בנושא זה: Optimization Tips for Multiple Range Predicates, Part 1Optimization Tips for Multiple Range Predicates, Part 2 הפוסט הזה נכתב בהשראתו, ויש לתת קרדיט למאסטר!עסקינן בשליפה מטבלאות ששורותיה כוללות נקודות התחלה וסיום (או מ.. עד..). באופן טבעי זה מתייחס לתאריכים (דוגמה טובה לכך הן טבלאות Slowly Changing Dimensions במחסני נתונים), אך לא רקבבעיות מהסוג של למצוא את כל האירועים שהתרחשו – במלואם או בחלקם – בין שני תאריכים, יש נטייה להסתבך: הרי יכול להיות שהאירוע התחיל לפני והסתיים תוך כדי או התחיל לפני והסתיים אחרי וכך הלאה, מתרגמים את הכל למערכת סבוכה של...
אין תגובות