אינדוקס טבלאות עבור שליפות הכוללות מיון ותנאי שאינו שיוויון

יום חמישי, אוגוסט 7, 2014

מה הבעייה שמצריכה כותרת כזו ארוכה? נתחיל ממה שאינו בעייה ונמשיך למה שכן.אם אנו נדרשים ליצור אינדקס עבור שליפה מהסוג הזה- Select ...From ...Where Col1=...Order By Col2; האינדקס יהיה על Col1 (עמודה ראשית) ו-Col2 (עמודה משנית),ועמודות נוספות שמופיעות בפסוקית ה-Select יופיעו ב-Include.המערכת תשלוף בעזרת  Index Seek רק את השורות העונות על התנאי של Col1,ולא תצטרך למיין אותן כי הן יהיו כבר ממויינות לפי Col2 (העמודה המשנית באינדקס).היכן ומתי כן יש בעייה? כאשר התנאי על Col1 אינו שיוויון (=) אלא אי שיוויון או In + רשימת ערכים וכו’; המערכת לא תוכל לנצל ביעילות את האינדקס הנ”ל: היא אמנם תגיע בקלות...
אין תגובות

התנייה במספר השורות

יום שישי, יוני 15, 2012

אנחנו כותבים קוד שמבצע פעולה מסויימת רק אם מספר השורות בשליפה מסויימת גדול או שווה ל-2 (נניח). לפני שנתחיל לזרוק הצעות- ניצור טבלה מתאימה שיהיה על מה להתאמן: Use tempdb; Go   If Object_ID('Messages') Is Not Null Drop Table Messages; Go   Select * Into Messages From sys.messages;   Select ...
אין תגובות

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

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

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