Нет, у вас могут быть подходящие индексы для объектов в подзапросе, но вы не можете добавить временный индекс в подзапрос, поскольку он у вас там есть.Вы можете запросить подсказку о способе объединения данных, например, о вложенном цикле, объединении или хэш-соединении, но оптимизатор стремится принять правильное решение.
Для получения такого эффекта можно выбрать результаты.этого подзапроса во временную таблицу и поместите туда индекс, затем присоединитесь к этой временной таблице.
Для этого вам потребуется хранимая процедура и включить следующий код:
SELECT yourFields
INTO #TempTableName
JOIN SomeOtherTables
WHERE SomeField=SomeValue;
CREATE CLUSTERED INDEX SomeIndexName ON #TempTableName(SomeField,AnotherField);
SELECT *
FROM tProduct p
JOIN #TempTableName t ON t.SomeField = p.SomeField
...
DROP TABLE #TempTableName -- optional, the table will die when it goes out of scope at the end of the procedure.
Индекс временной таблицы не должен быть кластеризован, это зависит от вашего выбора.