[SQL Server] Пустой Output List в Key Lookup
От: Somescout  
Дата: 28.06.17 03:06
Оценка:
Здравствуйте.

Настраивая запрос в SQLServer наткнулся на связку Index Seek (Non-clustered) + Key Lookup для одной таблицы. Открыл Output List и добавил все поля из него в Included в индексе. Но Key Lookup не исчез, просто Output list стал пустым.

Стал разбираться: в одном из условий есть ссылка на поле, не учавствующее в индексе. Поскольку поле не возвращается, в Output List оно не попадает. После добавления поля в индекс, Key Lookup изсчез, всё отлично, но — можно ли как-то найти такое поле не просмотривая запрос, только из данных Execution Plan?

Схожая ситуация в другом запросе, вида "WHERE a.id in (select b.key from table_b b ...)" — поле b.key тоже не отображается в свойствах Execution Plan, и также требуется для избавления от Key Lookup.
ARI ARI ARI... Arrivederci!
Отредактировано 28.06.2017 3:38 Somescout . Предыдущая версия .
Re: [SQL Server] Пустой Output List в Key Lookup
От: _ABC_  
Дата: 28.06.17 04:18
Оценка:
Здравствуйте, Somescout, Вы писали:

S>Здравствуйте.


И вы здравствуйте. Приложите, пожалуйста, первый план запроса.
Re: [SQL Server] Пустой Output List в Key Lookup
От: Somescout  
Дата: 28.06.17 04:28
Оценка: +1
Здравствуйте, Somescout, Вы писали:

Разобрался. Отображается в Predicate.
ARI ARI ARI... Arrivederci!
Re: [SQL Server] Пустой Output List в Key Lookup
От: MasterZiv СССР  
Дата: 04.07.17 15:31
Оценка: +1
Здравствуйте, Somescout, Вы писали:

S>Настраивая запрос в SQLServer наткнулся на связку Index Seek (Non-clustered) + Key Lookup для одной таблицы. Открыл Output List и добавил все поля из него в Included в индексе.


Ну, твои потуги зафигачить все поля в Included индекса достаточно смешны.
На все запросы не на-include-ишь, чуть запрос поменяется -- покрытие индексом потеряется.
IndexMaintanance растёт в цене, IO больше, и вообще.

Ты должен знать ОЧЕНЬ ХОРОШО, что ты делаешь, и для чего.
Re: [SQL Server] Пустой Output List в Key Lookup
От: MasterZiv СССР  
Дата: 04.07.17 15:33
Оценка:
Здравствуйте, Somescout, Вы писали:

S> но — можно ли как-то найти такое поле не просмотривая запрос, только из данных Execution Plan?


Как бы текс запроса у тебя должен быть перед глазами, в чём проблема найти там все поля нужной таблицы ?
Re[2]: [SQL Server] Пустой Output List в Key Lookup
От: Somescout  
Дата: 06.07.17 02:46
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Ну, твои потуги зафигачить все поля в Included индекса достаточно смешны.


Производительность выросла в 5 раз. Давайте поржём вместе.

MZ>На все запросы не на-include-ишь, чуть запрос поменяется -- покрытие индексом потеряется.

MZ>IndexMaintanance растёт в цене, IO больше, и вообще.

Запрос очень частый, удаление Key Lookup резко уменьшило количество Logical Reads.

MZ>Ты должен знать ОЧЕНЬ ХОРОШО, что ты делаешь, и для чего.


O Captain! My Captain!
ARI ARI ARI... Arrivederci!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.