Published: Monday, June 28, 1999
אתה יודע מה קרה משנת 1999 ועד היום ?!?
אתה יודע מה ההבלים בין MS-SQL 5 ל SQL 2012 ?
נתחיל מהסוף: בדרך כלל דיפדוף טוב במסד נתונים עושים בעזרת דיפדוף בעמודה מאונדקסת כמו עמודת ID. אם העמודה מכילה מספרים ללא חורים אז הפעולה פשוטה על ידי שליפת הרשומות המתאימות מייד. אם יש חורים אז תמיד אפשר למספר עמודה חדשה לפי עמודה זו (שכבר מאונדקסת ולכן המיון מהיר). ניתן למספר בצורה זמנית בזמן השאילתה או בצורה קבועה למשל במסדי נתונים גדולים כשאין הרבה מחיקות של נתונים אלא רק הכנסה וקריאה אפשר להוסיף טריגר למספר מחחדש של עמודה זו וככה לא מגיעים למצב של חורים)
עבודה עם עמודים מובנת בכל שרתי מסדי הנתונים הקיימים היום בשוק. נסה למצוא כתבה יותר צעירה מהגיל של ההורים
זה תמיד יכול לעזור. לא שהפתון שם לא יעבוד. אם אתה ממהר אתה יכול לחפש חומר על row_number למשל (זו פונקציה מובנית שיכולה לעזור למרות שהיא לא הכי יעילה אבל היא הכי קלה לעבודה מהירה במסדי נתונים קטנים)
אם אתה רוצה להגיע לרמת מיטוב הרבה יותר גבוהה אתה יכול לקרוא את הבלוג הבא (שגם הוא חדש אבל לפחות עדכני לעשור האחרון). זה לא פתרון לבעיה שלך בדיוק אבל יש הרבה נקודות למחשבה שקשורות גם לבעיה:
http://ariely.info/dnn/Blog/tabid/83/EntryId/68/Select-First-Log-entery-row-from-Log-Table.aspx
העניין הבסיסי הוא שאם היה לנו את ה DDL+DML שלך אולי היינו יכולים למצוא את הדרך המיטבית לך. ישנם הרבה מאוד שיטות לחלוקה לעמודים כגון שימוש בפונקציות חלון כמו row_number או rank או שמוש בלוגיקה של מודולו % ועוד...
* בשרתי 2012 ישנם הרבה שיטות נוספות במקרה של חורים לכסות את החורים בלי צורך בעמודה ממוספרת חדשה (למשל עבודה עם lead/lag).
** לגבי השגיאה שקיבלת ובכלל, כדי להבין מה אורך החיים של טבלה זמנית אז כדאי לעבור על הקישור הבא:
http://bisqlserver2005.blogspot.co.il/2008/09/what-is-life-time-of-temporary-table-on.html
אני מקווה שזה יעזור לך מעט,