Lookup לטבלה: Heap\Clustered Index

20/03/2014

כידוע Clustered Index אינו אלא טבלה (ממויינת פיזית אך עדיין – טבלה), יש לו יתרונות מסויימים, אולי גם כמה חסרונות, לרוב ממליצים על Clustered Index בכל טבלה, אך יש בוודאי גם חולקים על כך, יש לכך חסרונות מסויימים בהכנסת הנתונים אך יתרונות בשליפתם..יתרונות בשליפתם? כן: אם ניתן להגיע לנתונים על ידי Seek (מה שלא ניתן ב-Heap) זה בוודאי יתרון, ואם לא ויש לעשות Scan – אין הבדל בינהם; כך שלהפסיד – לא נפסיד.האומנם? התחלתי לקרוא את המאמר  Clustered Indexes vs. Heaps ומה הופתעתי לגלות שזה לא תמיד כך: נניח שיש אינדקס על עמודה מסויימת והמערכת משתמשת בה כדי לשלוף...
תגובה אחת

שימוש בפונקציות חלון לשרשור ערכים מטבלה

13/03/2014

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

תנאים מותנים

08/03/2014

נתון פרמטר, ואנחנו רוצים לשלוף את כל השורות שהערך בעמודה מסויימת שווה לו. משהו כמו MyCol=@MyParam, אבל אם הפרמטר הוא Null אז שיחזיר את כל השורות, כלומר- משהו כמו MyCol=@MyParam Or @MyParam Is Null, אך אפשר לייפות את התנאי למשהו קצר יותר בעזרת IsNull, בערך כך: Create Table T1(I Int);Create Index Idx_T1 On T1(I); InsertInto T1(I)Values (1), (2), (3), (4); Declare @I Int=2;Select *From ...
תגיות: ,
אין תגובות

Join מותנה לטבלה

06/03/2014

הבעייה בקצרה: יש שליפה שבמקרים מסויימים צריכה ליצור Join בין טבלה 1 לטבלה 2,ובמקרים אחרים לפנות רק לטבלה 1.נניח שבשני המקרים טבלה 2 קיימת, כך שהבעייה אינה כיצד נעבור קומפילציה אם הקוד כולל פניה לטבלה לא קיימת, גם אם בפועל (כפי שנראה להלן) הוא אינו פונה אליה.פתרון אפשרי הוא להשתמש בתנאי If: אם כן אזי שליפה עם Join, ואם לא (Else) שליפה רק מטבלה אחת.פתרון אחר – יותר דראסטי – הוא ליצור קוד דינמי, והיתרון במקרה כזה שגם פתרנו את בעיית הפניה לטבלה 2 אם היא אינה קיימת.ובכל זאת- מה הפתרון האלגנטי? בלי לכתוב שתי שליפות נפרדות ובלי קוד...
תגיות: ,
אין תגובות