Индексирование предложения WHERE OUTER/CROSS APPLY с помощью INCLUDE

Я прочитал, что индексные столбцы должны использоваться при использовании предложения WHERE для ограничения возвращаемых записей (т.е. SELECT * from Table1 WHERE Field1 = 'abc').

Применяется ли это правило при использовании APPLY, как в

SELECT t.Field1,x.Field2 from Table1 t OUTER APPLY (select * from Table2 x WHERE t.Field1 = x.Field1?

Другими словами, ускорит ли размещение индекса Table2.Field1 вышеупомянутый запрос?

Извините, если ответ очевиден, у меня нет четкого понимания механизма OUTER и CROSS APPLY, только то, что они могут использоваться вместо JOIN.

РЕДАКТИРОВАТЬ Лучший вопрос, основанный на этом потоке ( жесткие и быстрые правила для включения столбцов в Index), должен ли я использовать INCLUDE для всех столбцов, которые я извлекаю из другой таблицы, и если да, то будет ли он более эффективным? использовать OUTER APPLY (select Field1,Field2 вместо OUTER APPLY (select *

2 ответа

Столбец, который используется в OUTER Apply, должен быть проиндексирован и должен использоваться для объединения с основным запросом, что улучшит процесс поиска запроса, так как он будет использоваться при поиске по кластерному индексу, и это сделает запрос быстрее, а план выполнения будет повторно использован в успешный поиск.

Что ж, всякий раз, когда вы указываете условие для столбца, индекс поможет ускорить поиск.

Однако это обходится дорого: во время вставки индекс необходимо будет пересчитать, и, конечно, вам потребуется место на диске. Но помимо этого индексы имеют (почти) только преимущества.

Другие вопросы по тегам