פונקציות חלון: יתרונות וחסרונות

יום שלישי, אוקטובר 5, 2010

עד כה סברתי לתומי שפונקציות החלון הן לא רק שימושיות במובן זה שהן מאפשרות להגיע לתוצאות המבוקשות ללא משפטי SQL מורכבים ובלתי ניתנים לפיענוח, אלא שהן גם יעילות יותר: החבר'ה המצויינים ממיקרוסופט כתבו את הקוד הסודי שמשמש אותן, ולבטח עשו זאת בדרך היעילה ביותר האפשרית. למרה הפתעתי מתברר שהביצועים שלהם לא תמיד המשובחים ביותר, ולעיתים יש מקום לחשב שכר מצווה כנגד הפסדה. הדוגמאות שלהלן הן ברובן טכניות ואין מאחוריהן שום הגיון עיסקי, והן יעשו שימוש בטבלה AdventureWorks.Sales.SalesOrderDetail שיש בה מעל 120,000 שורות (כלומר- מספיק "בשר"), כאשר השאילתות הורצו על גרסת 2005. נתבונן בשתי השליפות הבאות וב-Execution Plans שלהן- הן מחזירות בדיוק...