Vertical Partition

יום שישי, מרץ 27, 2015

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

הפתעות בבדיקת יעילות של שאילתות

יום רביעי, נובמבר 5, 2014

נתונות שתי טבלאות, למשל אלו: Select * Into #T_Messages From sys.messages;Alter Table #T_Messages Add Constraint PK_#T_Messages Primary Key Clustered (message_id,language_id);Go Select * Into #T_Languages From sys.syslanguages;Alter Table #T_Languages Add Constraint PK_#T_Languages Primary Key Clustered (lcid);Go ואני רוצה לבדוק את היעילות של שאילתת ה-Left Join הבאה – כמה זמן הריצה נמשכת, כמה Pages נקראים, אולי השוואה לשאילתה דומה שכתובה קצת אחרת וכו’: Select *From #T_Messages MLeft Join #T_Languages L On M.language_id=L.lcid; מכיוון שמדובר בשליפה של מאות אלפי שורות – יש לברר מי צריך את כל זה: מישהו מתכוון לעיין בכובד...
אין תגובות

פעולות חיתוך ואיחוד בין קבוצות וביצוע Union בעזרת Join

יום שני, פברואר 28, 2011

דרך מעניינת להסתכל על טבלאות היא כעל קבוצות של רשומות. נכון שהדימוי האינטואיטיבי הוא דווקא של רשימה מסודרת (טבלה..) אבל לסדר אין חשיבות והטבלה נשארת אותה טבלה ללא קשר לאופן המיון הלוגי או הפיזי של הרשומות (זו כנראה אחת הסיבות להתעקשותה של Microsoft לא לאפשר ביצוע Order By ב-View), ובין טבלאות ניתן לבצע פעולות חיתוך ואיחוד כפי שלמדנו במבוא לתורת הקבוצות.. לצורך ההמחשה ניצור שתי טבלאות בעלות מבנה זהה, ונכניס לתוכן נתונים - חלקם זהים וחלקם שונים: Use tempdb; Go ...

חשבתי לתומי שאני יודע הכל על Left Join

יום שלישי, פברואר 15, 2011

איזהו חכם? הלומד מכל אדם: אריאל ממקום עבודתי שאל אותי לגבי Left Join, והופתעתי לגלות פינה שלא הייתי מודע לה- בזכותו. דוגמה קצרה- ניצור טבלת עובדים וטבלת ישובים, ונכניס לתוכן נתונים: Use tempdb; Go   Create Table T_Ovdim(Oved Varchar(20) Primary Key, Yishuv Int, ...
2 תגובות

שליפה מטבלאות המתייחסות זו לזו

יום שלישי, יולי 6, 2010

ההיכרות הראשונה שלי עם עולם בסיסי הנתונים הרלציוניים הייתה לפני כחמש עשרה שנה בקורס אקסס – באחת מגרסאותיו הראשונות. אם לפני הקורס חשבתי שאקסס זה אקסל משופר, הרי לאחר השיעור הראשון בו הראו לנו איך יוצרים טבלה, מכניסים לתוכה נתונים, ממינים ומפלטרים אותה- התחלתי לחשוש שמדובר באקסל נחות ומנוון.. רק לאחר שהראו לנו איך עושים Join בין טבלאות אמרתי בליבי "אההה.." ארוך שפירושו הוא "עכשיו אני מבין..". לזכר ימי התום האלו אני אנסה לרכז בפוסט אחד את כל הדרכים לשלוף מטבלאות תוך שהן מתייחסות זו לזו. נתחיל ביצירת שתי טבלאות לצורך ההדגמות: Use tempdb; Go If Object_Id('T_Ovdim') Is Not Null Drop Table T_Ovdim Go Create Table T_Ovdim(ID Int...