הבלוג של גרי רשף

28/04/2010

שימוש ב-Sparse Columns וב-Column_Set

Filed under: Uncategorized — תגיות: , , — גרי רשף @ 13:46

כאשר קולטים רשומות הכוללות Null – הם (ה-Nulls) תופסים מקום, בניגוד למה שאולי היינו מצפים.
למשל בעמודות מסוג Varchar ששומרות רק את המחרוזת שקלטנו ללא מקומות פנויים לתווים המיותרים (אם נניח קלטנו מחרוזת באורך 10 תווים לשדה שיכול לקלוט עד 50 תווים) יש צורך לשמור בכל רשומה מידע לגבי אורך המחרוזת השמורה באותה עמודה.
החל מגרסת SQL Server 2008 יש אפשרות להגדיר שדות כ-Sparse Columns ואז לא מבוזבז מקום כשיש Null, אלא רק כשאין ערך (כלומר- טוב להשתמש בהן כשברוב המקרים יש Null).
פטנט זה מגיע יחד עם האופציה ליצור Column_Set שזו מעין עמודה מחושבת המציגה בתור Xml את כל שדות ה-Sparse:

Create Table #Tmp(ID Int Identity Primary Key,

                S Varchar(Max) Sparse Null,

                I Int Sparse Null,

                B Bit Sparse Null,

                D DateTime Sparse Null,

                SIBD XML COLUMN_SET FOR ALL_SPARSE_COLUMNS);

Go

כפי שאפשר לראות- העמודות S,I,B,D הן עמודות Sparse מסוגי נתונים שונים,

ועמודה SIBD היא Column_Set שתציג את ארבעתן כ-Xml.

נכניס כעת מספר שורות לטבלה:

Insert Into #Tmp(S) Values('Try it');

Insert Into #Tmp(I) Values(123);

Insert Into #Tmp(B) Values(1);

Insert Into #Tmp(D) Values(GETDATE());

וכעת נכניס נתונים לעמודות ה-Sparse דרך ה-Column_Set (ערך Xml בודד הכולל ארבעה ערכים לארבע העמודות):

Insert Into #Tmp(SIBD) Values(Cast('<S>Another try</S><I>456</I><B>0</B><D>2010-04-01T12:00:00</D>' As Xml));

כעת נשלוף את נתוני הטבלה, ויש לשים לב שכדי לעיין בעמודות ה-Sparse יש לציין אותן במפורש ב-Select:

Select    * ,

        S,

        I,

        B,

        D

From    #Tmp;

מודעות פרסומת

להגיב »

עדיין אין תגובות.

RSS feed for comments on this post. TrackBack URI

להשאיר תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s

בלוג בוורדפרס.קום.

%d בלוגרים אהבו את זה: