Indexed Views וכמה Clustered Indexes ניתן ליצור על טבלה?

יום רביעי, פברואר 22, 2012

מהם Indexed Views? כיצד יוצרים אותם? מה התועלת בהם? אילו יתרונות, מגבלות, חסרונות וחלופות יש להם? ולבסוף- האם ניתן ליצור יותר מ-Clustered Index אחד על טבלה? (ספויילר: התשובה היא "לא, אבל..") מגרסת 2005 יש אפשרות ליצור אינדקסים על Views, או ליתר דיוק- ליצור Views כך שיהיה ניתן ליצור עליהם אינדקסים. ניצור לצורך ההדגמה טבלה, ניצור עליה Clustered Index, ניצור View על הטבלה, וניצור גם עליו Clustered Index אבל שונה: Use tempdb; Go   ...

באיזה סוג משתנה טקסטואלי כדאי לבחור?

יום ראשון, פברואר 5, 2012

מה ההבדל בין Char / NChar / Varchar / NVarchar? מתי נבחר במשתנה התומך ביוניקוד (NChar / NVarChar) ומתי לא (Char / Varchar)? מתי נבחר במשתנה קבוע באורכו (Char / NChar) ומתי בבעל גודל משתנה (Varchar / NVarchar)? כיצד נדע באיזה גודל משתנה לבחור- גודל מוגבל או לא (Max)? לרוב הצרכים המעשיים- שימוש ב-Char או ב-Varchar אמור להספיק בהנחה שה-Collation הוא עברי ואנחנו מעוניינים לכתוב בעברית ובאנגלית כולל נִיקוּד בעברית ואותיות גדולות/קטנות ב-English, אך לא בתווים לטיניים מיוחדים האופייניים לחלק מהשפות האירופאיות. סוגי נתונים כדוגמת NChar או...

השפעת האינדקס על חיפוש בטבלה

יום ראשון, ספטמבר 19, 2010

ניצור טבלה- בשלב ראשון ללא אינדקס: Use tempdb; Go If object_id('SalesOrderDetail') Is Not Null Drop Table SalesOrderDetail; Go Create Table SalesOrderDetail(SalesOrderID int, SalesOrderDetailID int, CarrierTrackingNumber nvarchar(25) NULL, ...

מחיקת שורות ישנות מטבלאות גדולות

יום חמישי, אוגוסט 12, 2010

נדרשנו למחוק נתונים ישנים מטבלאות גדולות: הגדולה שבהם בת כ-650,000,000 והאחרות אולי קטנות יותר אבל יחד מצטברות לנפח אחסון גדול ומיותר. ניסינו בהתחלה בתמימותנו – לבצע 'Delete From MyTbl Where Taarih<='20091231 כלומר- למחוק את כל מה שמשנת 2009 ודרומה, אבל זה הסתיים בתקיעת השרת למשך שעות ארוכות וניפוח הלוג למימדים מפלצתיים; ולבסוף עצרנו את המחיקה. החלטנו לעשות זאת בשלבים- כתבנו פרוצדורה שמתחילה מהתאריך הקטן ביותר בטבלה, מוחקת בלולאה את 50,000 הרשומות הראשונות ממנו בכל איטרציה, ועוברת לתאריך הבא בתור: Create Procedure MyProc As Declare @D DateTime, @RC Integer; Select @D=(Select MIN(Taarih) From MyTbl), ...