Использование выражения Common Table для простого выбора

Я заметил в нашем проекте следующее использование Common Table Expression для простого выбора из представления:

WITH CTE_View_Alias AS ( SELECT Id, Column1, Column2 FROM VW_View ), CTE_Foo AS ( SELECT B.Bar_Id, V.Column1 FROM VW_Bar B INNER JOIN CTE_View_Alias V ON B.View_Id = V.Id ) 

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

Есть ли польза от использования этого? Почему бы прямо не ссылаться на представление? К сожалению, создатель этих SQL-запросов больше не работает с компанией. Для меня это уменьшает читаемость, но я не хочу ее устранять, если есть причина, по которой моя неопытность мешает мне видеть.

Нет никакой разницы между:

 WITH CTE_View_Alias AS ( SELECT v.id, v.column1, v.column2 FROM VW_View v) SELECT t.* FROM CTE_View_Alias t 

…а также:

 SELECT v.id, v.column1, v.column2 FROM VW_View v 

Правдоподобно мнение тоже не нужно, но это не вопрос поставленный …

Не существует разницы в производительности между ранее упомянутыми опциями и производной таблицей:

  SELECT x.* FROM (SELECT v.id, v.column1, v.column2 FROM VW_View v) x 

CTE является синтаксическим сахаром для производной таблицы, если не используется рекурсивная функциональность .

Вывод

Вы должны спросить автора, почему они решили использовать CTE. Возможно, были сняты более сложные операции, и CTE остался как есть в страхе сломать что-то непредвиденное. Или это просто функциональность, которую они хотели использовать …

Я всегда опасаюсь, что такие вопросы слишком абстрагированы / упрощены, чтобы продемонстрировать решения.

  • Рекурсивный SUM-сервер SUM
  • Результат SELECT как параметр в пользовательской функции table-parameter
  • Идентификатор пути рекурсии SQL-сервера
  • Использование предложения WITH в SQL Server
  • SQL-сервер - перемещение дерева в двух направлениях
  • Запрос SQL Server с разбивкой по страницам и подсчету
  • Сохраненная процедура не работает со вставкой в ​​временную таблицу
  • Использование рекурсивного CTE с GroupBy
  • Как обратиться к одному CTE дважды?
  • Почему вычисление CTE дублируется в плане запроса и как оптимизировать его без дублирования кода?
  • Использование общего табличного выражения с предложением OUTPUT
  • Давайте будем гением компьютера.