האופרטור In / Not In: חלופות, וביצועים

31/10/2012

כשהייתי בראשית דרכי ב-SQL Server, שמעתי באחד הכנסים ש"בדקו ומצאו" שהשימוש ב-Inner Join מעט יותר יעיל מאשר השימוש ב-In. אינני זוכר בוודאות ממי שמעתי את זה, אך עובדה שבמשך שנים התייחסתי לכך כאל תורה מסיני, ואף ציטטתי זאת בידענות פה ושם. לאחרונה כשנזכרתי בכך, קמטתי את מצחי ותהיתי האמנם.. דווקא הנסיון והידע שצברתי מאז הובילו אותי לחשוב כיום שאולי דווקא In יעיל יותר: בניגוד ל-Join בו לכל שורה מצד ה-From יש למצוא את כל ההתאמות בצד ה-Join, ב-In יש למצוא רק את ההתאמה הראשונה.. ואם כבר- אז מה עם השימוש ב-Exists? האם מדובר רק ב-In משופר או...
תגיות: , , , , , ,
אין תגובות

התאמות בין מחרוזות

22/10/2012

בעייה שניתקלתי בה לאחרונה: נתונה טבלה ובה מחרוזות, ויש לבדוק ולהשוות כל אחת מהן למחרוזת חיצונית ולבדוק כמה התאמות יש (כלומר- כמה "בולים" יש כמקובל במשחק בול-פגיעה). לדוגמה- טבלה עם מספר מחרוזות (במקרה זה מחרוזות של ספרות אך ניתן גם תווים אחרים): Create Table #T(ID Int Primary Key, Nm Varchar(20)); Go   Insert Into #T Select...
אין תגובות

הרצת פקודות דינמיות: Exec מול SP_ExecuteSQL

10/10/2012

כשמריצים SQL דינמי ניתן לעשות שימוש באחת משתי פרוצדורות המערכת הנ"ל. ה-DBA-ים הוותיקים בוודאי זוכרים במעורפל משהו על כך ש-SP_ExecuteSQL עדיפה מפני שהיא יכולה למחזר Execution Plans, אך מה זה בדיוק אומר ומי מבין השתיים עדיפה ומתי? נפתח ברשימת המצרכים- טבלה עליה נוכל להריץ את הקודים הדינמיים: Use tempdb; Go   If Object_ID('T_Messages','U') Is Not Null Drop Table T_Messages; Go   Select * Into T_Messages From sys.messages; ...
תגובה אחת