Единственное, что надо понять, - это если набор результатов для работы содержит много объединений или даже вложенных объединений.
У меня было два или три экземпляра, где исходный запрос, который я унаследовал, состоял из одного запроса, в котором было так много объединений, и для подготовки оператора потребовалась бы хорошая минута.
Я вернулся к процедуре, использовал некоторые переменные таблицы (или временные таблицы) и разбил запрос на множество меньших отдельных операторов выбора типа и построил окончательный набор результатов таким образом.
Это обновление существенно исправило время отклика, вплоть до нескольких секунд, потому что было проще сделать много простых «однократных снимков» для получения необходимых данных.
Я не пытаюсь возражать здесь ради возражений, но просто хочу указать, что код мог быть разбит до такого детального уровня для решения аналогичной проблемы.