Итак, я разработчик SQL на уровне промежуточного уровня, и в последнее время я наблюдаю массу обсуждений, связанных с CTE (Common Table Expressions). Везде я смотрю, я вижу, как люди говорят, что это эта удивительная вещь:SQL - зачем использовать CTE?
КТР (Common Table Expressions) являются одним из самых красивых и самых мощных особенность SQL Server и находкой для разработчиков SQL Server. Это не только упрощает большинство сложных операций в T-SQL, но и делает намного больше, чем можно себе представить.
Комментарий пользователя к статье Microsoft Technet по использованию CTE.
Из-за того, что я видел и читал в Интернете, CTE по существу является просто «самонаполняющейся» временной таблицей, которую можно использовать только один раз. Единственное преимущество, которое я вижу, это то, что CTE очищает себя, в отличие от временной таблицы, связанной с сеансом. Я также видел много комментариев о рекурсии, но никогда не сталкивался с ситуацией, когда мне нужно было ее использовать; Я чувствую, что это очень специфично для определенного типа проблем?
Вкратце: Являются ли CTE сугубо косвенными или я пропустил что-то чрезвычайно мощное здесь? Я еще не вижу реальной выгоды от использования CTE по временной таблице.
Помимо того, что они могут быть рекурсивными, не так ли сложно уменьшить сложность в sql? Мне этого достаточно, чтобы регулярно их использовать. Мощный может означать: 1.более читаемый 2.более ремонтопригодный 3. безопасный –
Как вы только что сказали, рекурсия - одно из преимуществ, факт, что вы не сталкивались с ситуацией, когда вам это нужно, не нужно, чтобы это не принесло пользы , Еще одна большая для меня читаемость. Вы можете перейти к [этой ссылке] (http://dba.stackexchange.com/questions/14490/common-table-expression-cte-benefits), чтобы узнать больше о них – Lamak
В этом проблема: я не вижу, как они уменьшить сложность. Я понимаю, что вы можете разбить запрос на более мелкие разделы, но я могу сделать это с помощью Temp Tables. Извините, возможно, лучший вопрос: зачем мне когда-либо использовать CTE, когда я мог бы использовать гораздо более гибкую (IMO) таблицу temp, которая позволяет мне манипулировать данными и продолжать использовать ее для жизненного цикла инструкции/процедуры? Что касается читаемости, мне придется привыкнуть к этому. Поскольку я их не использую, я не знаком с синтаксисом, который делает чтение более трудным для меня - это на 100% только кривая обучения. –