אחת מהבעיות הנפוצות בנושא ביצועים היא אי התאמה בין סוג הפרמטר בפרוצדורה לבין סוג העמודה בטבלה. לא כולם מכירים את הבעיה הזו, אבל היא משפיעה קשות על הביצועים: במקרה כזה מתבצע implicit conversion, לא תמיד לכיוון הרצוי, ומונע שימוש באינדקס.
על דוגמה לבעיה וכמה היא משפיעה תוכלו לקרוא כאן.
ויקטור שחר, DBA בחברת Tradency, כתב סקריפט כדי לאתר מקרים כאלו:
צריכים למצוא אי התאמות בין סוגי הפרמטרים המוגדרים בפרוצדורות לבין סוגי השדות האמיתיים בטבלאות שבשימוש בכל פרוצדורה ?
אני מאמין שהפרוצדורה הבא מסוגלת למצוא את רב האי התאמות האלו, זאת לאחר שמקשרים בין השדות האמיתיים ולבין הפרמטרים לאחר שנימצאו dependencies בין הפרוצדורות והטבלאות שבשימוש בהם.
שימו לב: הפרוצדורה יוצאת מנקודת הנחה ששמות הפרמטריים הינם אותו הדבר כמו שמות השדות האמיתיים כמובן רק בתוספת של סימן ה- '@', היינו חייבים לבצע join בין שמות הפרוצדורות ושמות השדות האמיתיים & שמות הפרמטרים (…ללא ה- '@').
תהנו חברים – הצעות ושיפורים יתקבלו בברכה !
תודה רבה, ויפה מאוד! (כלומר- עוד יעשה בזה שימוש..)
לנסיון בדקתי את AdventureWorks ומצאתי הרבה שגיאות (בדטבייס לא בסקריפט.., כנראה מפני שיש שם שימוש ב-User Defined Data-Types.
תודה גרי, אני אבדוק את זה גם, בדקתי במס' בסיסי נתונים אחרים לפני שפרסמתי ובל לא בדקתי ב- AW.
אגב, הסקריפט אינו מסוגל "להבין" מה באמת עושים עם הערכים שהגיעו בפרמטרים, האם יש שליפת נתונים או עדכון כלשהוא, הסקריפט רק מגלה שיש הבדלים בין סוגי השדות האמיתיים והפרמטריים, אין לי שום דרך לדעת מה קורה בהמשך בתוך הקוד.
אצלינו זה מצא את רב המקרים האמיתיים.
בברכה,
ויקטור ש.
DBA
ויקטור תעשה לי CLUSTER!!!!!!!!