Вам действительно придется тестировать производительность - нет ответа Да / Нет. Согласно приведенному выше сообщению Энди Ливинга, CTE - это просто сокращение для запроса или подзапроса.
Если вы вызываете его дважды или более в одной и той же функции, производительность может быть выше, если вы заполните табличную переменную и затем присоединитесь к / выберите из этого. Однако, поскольку табличные переменные занимают место где-то и не имеют индексов / статистики (за исключением любого объявленного первичного ключа в табличной переменной), невозможно сказать, что будет быстрее.
Они оба имеют затраты и экономию, и наилучший способ зависит от данных, которые они извлекают, и от того, что они делают с ними. Я был в вашей ситуации, и после тестирования на скорость в различных условиях - некоторые функции использовали CTE, а другие использовали табличные переменные.