@ClickOne
אם גידול הרשימות משמעותי הפיתרון של ארכיטקט לא ישים. (גם אם המספר ההתחלתי הוא מליון והוא כותב מערכת גדולה הוא כבר נכנס לסיכון [במיוחד אם הטבלה הראשית שעליה הוא מדבר היא לא של אנשי קשר (שאין הרבה) אלא של מיילים לדוגמא - הוא לא יכול להגביל את עצמו למליון])
תראה, גידול רשומות הוא סיכון בכל טבלה עם מאפיין int ייחודי, רק שכאן הוא מגיע יותר מהר. הסיכון נמצא במידה שווה גם בדוגמתך, כל עוד הקונוורט שלך הוא לint. זה נכון שאפשר לעשות אותו לסטרינג כמו שכתבת:
@ClickOne
לגבי הביזבוז עם סטרינג, אני רק רוצה להזכיר שסטרינג בהחלט יכול לשמש כמפתח ראשי על אף הבזבזנות שלו (ועל אף הרצון של כולנו להשתמש דווקא במספר אוטו') - לדוגמא: GUID, שממומש במקרים רבים כסטרינג + מפתח ראשי ולא כסוג uniqueidentifier.
אני התכוונתי על בזבוז מעבד וזיכרון ברגע החישוב, לא על זיכרון דיסק באחסון (זה בכלל עמודה מחושבת!!).
לגבי מקום בדיסק או ביצועי השוואה (כאינדקס, וכמפתח ראשי) אין הבדל כלל בין סטרינג למספר, בתנאי שהסטרינג אורך קבוע (לא varchar), ושההשוואה היא מול מספר של קנה מידה שווה (עם זה char(10) לדוגמה, אז כל char זה byte שלם, מה שאומר מספר ענק.
אגב אפשר להשתמש למקרה שלנו גם בטיפוס binary, לכאורה זה חוסך.
פורסם במקור בפורום CODE613 ב22/05/2014 11:50 (+03:00)