none
Key Lookup with no output list RRS feed

  • שאלה

  • SQL Server 2014 SP1-CU3

    מישהו יודע מה אומר Key Lookup שהרשימה ב Output list שלו ריקה?

    איך אפשר לדעת מה חסר לו (חוץ מלהסתכל על השאילתא) על האינדקס?

    יום רביעי 10 פברואר 2016 12:32

כל התגובות

  • אהלן

    לא ממש הצלחתי להבין את השאלה.

    ישנם הרבה מקרים בהם אתה לא רואה Output list כאשר יש שימוש ב Key Lookup. לךמשל במצב של שימוש בפילטר אינדק עם פילטר של NULL אפשר להיתקל בכך. אם אתה רוצה תשובה לגבי המצב שלך אז אתה צריך לצרף את המצב שלך ז"א את ה DDL+DML ואת השאילתה שאתה מריץ (כמובן צריך לדעת מה גרסת השרת גם כן, ואם אפשר אז לצרף את תוכנית ההצרה שלך בצורה המלאה ז"א ה XML שלה).

    הנה דוגמה למצב דומה:
    https://connect.microsoft.com/SQLServer/feedback/details/454744/filtered-index-not-used-and-key-lookup-with-no-output/

    תעבור גם על הקישור הבא, לראות אם הוא תורם הבנה על הנושאף

    http://sqlperformance.com/2014/06/sql-plan/filtered-index-side-effect

    ועתה אם תצרף את המקרה שלך אז נוכל לעבור עליו ולחישוב ספציפית מה קרה אם עדיין לא ברור שזו אפשרות סבירה :-)


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום רביעי 10 פברואר 2016 16:55
    מנחה דיון
  • תודה על התשובה.

    ציינתי את סוג השרת שבו אני רץ בשאלה. אבל נתקלתי בזה גם בגרסאות קודמות יותר.

    את נושא ה filtered index ראיתי כבר ברשת אבל זהו לא המצב. אני רץ על index רגיל.

    יצרתי את אותו ה index רק שהפעם הוספתי את השדות הרלוונטיים לרשימת include. מן הסתם, הפעם לא קיבלתי key lookup.

    לדעתי זה לא ממש משנה מהיא השאילתא. האופרטור עושה משהו ספציפי ויש לו מאפיין, רשימת ה"סיבות" שבגללן הוא נוצר.

    השאלה שלי היא פשוטה:

    באופרטור ה key lookup יש את ה output list. זה אמור להצביע אילו שדות היה צריך לגשת ל clustered index כדי להביא אותם כי הם לא נמצאים על האינדקס. לרוב, הרשימה מופיעה שם.

    נתקלתי כבר בכמה פעמים שבאופרטור הזה, ה output list מופיעה ריקה.

    האם מישהו יודע מדוע?

    יום רביעי 10 פברואר 2016 19:29
  • אם תביא לנו את המקרה שלך נוכל לדון בו :-)

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

    אולי מישהו יוכל למצוא או לכתוב רשימה מסודרת של מקרים ותגובות בהם יש שימוש ב key lookup עם רשימת output list ריקה. אני לא מכיר כזו וגם חישתי משהו באינטרנט ולא מצאתי.


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום חמישי 11 פברואר 2016 11:06
    מנחה דיון
  • היי VR-46

    מניסיוני, המקרים בהם לא הופיעו ערכי ה- Lookup ב- Output List, הם בדרך כלל מקרים בהם מדובר בשאילתה שבה יש לא מעט עמודות (או עמודות עם שמות ארוכים במיוחד) שהם היו אמורים להיות מוצגים ב- Output List. כלומר, מפאת אורכו של ה- Output List לא היה ניתן להציג אותו ב- Tool Tip של ה- Lookup. על מנת לפתור את הבעיה, פשוט אפשר להפעיל Actual Execution Plan, לעמוד על ערך ה- Key Lookup עצמו ב-Plan, ואז ללחוץ לחצן ימני לבחור ב- Properties, לאחר מכן לחפש את ה- Output List בתפריט שייפתח מצד ימין, בצד ימין שלו יש מן מרובע קטן עם שלוש נקודות קטנות בתוכו, לחיצה עליו תפתח חלון קטן ובו נמצא האוצר שאתה מחפש, רשימת ה- Output List המלאה. הרשימה היא בפורמט של DatabaseName.Schema.TableName.ColumnName.

    מקווה שעזרתי,

    יוסי



    • נערך על-ידי Yossi Hakikat יום שני 15 פברואר 2016 06:51
    יום שני 15 פברואר 2016 05:19
  • אהלן יוסי, תודה על המידע. בהחלט מועיל לזכור שתוכנית ההרצה אינה התמונה שאנחנו רואים אלא ה XML :-)
    +1

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

    את הערכים אפשר למצוא בתוכנית ההרצה שהיא הXML. במקרים רבים התצוגה של התמונה שנועדה רק לעזרה ולהמחשה מהירה, חסרה בנתונים מאוד חשובים! מאוד מומלץ להתרגל לעבוד עם תצוגת ה XML בנוסף (אני לא אורמ שבכל מקרה קטן ניגש ל XML אבל בהחלט בשאלות שעולות ובחיפוש מידע נוסף ופירוט).


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום שני 15 פברואר 2016 08:35
    מנחה דיון