У меня были некоторые странные проблемы с производительностью при использовании CTE в SQL Server 2005. Во многих случаях замена CTE на реальную временную таблицу решила проблему.
Я бы попробовал это перед дальнейшим использованием CTE.
Я так и не нашел объяснения проблем с производительностью, которые у меня были, и на самом деле у меня не было времени разобраться с коренными причинами. Однако я всегда подозревал, что движок не может оптимизировать CTE так же, как он может оптимизировать временную таблицу (которую можно проиндексировать, если требуется дополнительная оптимизация).
Обновление
После вашего комментария о том, что это представление, я сначала проверил бы запрос с помощью временной таблицы, чтобы увидеть, работает ли он лучше.
Если это так, и использование сохраненного процесса не является вариантом, вы можете рассмотреть возможность превращения текущего CTE в индексированное / материализованное представление. Прежде чем идти по этому пути, вы захотите ознакомиться с предметом, так как это хорошая идея, зависит от множества факторов, не в последнюю очередь от того, как часто обновляются данные.