Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 CTE vs View vs Embedded Select  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
Всем привет.
Подсажите пж. с точки зрения оптимизатора есть ли различия используя ли CTE или View, или прячу запрос за скобки .

В теории это все должно быть равно , а как на практике ?

ЕР
2 мар 14, 23:24    [15659827]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
sdet
Member

Откуда:
Сообщений: 463
essbase.ru
Всем привет.
Подсажите пж. с точки зрения оптимизатора есть ли различия используя ли CTE или View, или прячу запрос за скобки .

В теории это все должно быть равно , а как на практике ?

ЕР

А на практике надо смотреть план выполнения запроса. Да и на View можно создать кластерный индекс, в отличии от CTE.
С другой стороны для рекурсии используется только CTE
2 мар 14, 23:51    [15659946]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
В остальных случаях это кусок текста. Т.е. монописуально.

Но на практике они имеют разный смысл.
VIEW как классы в ООП (хотя хреновое сравнение) - часто объединяют полное описание сущности, или часто используемое понятие.
Иногда индексируют, иногда ставят уникальный индекс как мульти-табличное ограничение.
CTE - помимо рекурсий ставят как локальное (в отличие от VIEW) именованное определение/связывание.
Скобки ... лично я их не пишу, использую APPLY, СTE, ну кроме случаев с EXISTS. С ними сильно загромождается запрос, по мне.

Одно из неудобств CTE - их нельзя параметризовать, в отличие от представлений.
3 мар 14, 01:54    [15660260]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
aleks2
Guest
essbase.ru
Всем привет.
Подсажите пж. с точки зрения оптимизатора есть ли различия используя ли CTE или View, или прячу запрос за скобки .

В теории это все должно быть равно , а как на практике ?

ЕР

За редким вычетом Indexed View, оптимизатор раскрывает (подставляет) все определения (CTE или View или запрос за скобками), собирает монстра и его оптимизирует.

Т.е. абсолютно неважно сошлетесь вы на View или явно набарабаните текст этого View в запросе.
3 мар 14, 06:56    [15660397]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
Спасибо всем за комментарии . )

Нашел выход в использовании табличных функций и табличных переменных. Конечно необычно (особенное после Oracle) , но зато все под контролем )


ЕР
3 мар 14, 11:57    [15661417]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
Glory
Member

Откуда:
Сообщений: 104760
essbase.ru
но зато все под контролем

Интересно, а "все" - это план выполнения или еще что-то ?
3 мар 14, 12:01    [15661458]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
Glory
, а "все" - это план


Это гарантия того , что "лишний" раз MsSQL не пойдет селектить табличку , которя 5 раз встречается в различных вариантах в текущем запросе.

Для меня это слишком дорого. Неоптимизированный запрос (через CTE) работал 5 минут. Через табличные переменные - 10 сек.

З.Ы. у меня "аналитическая" специфика , с фуллсканами и внешними вызовами
3 мар 14, 12:09    [15661524]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
Glory
Member

Откуда:
Сообщений: 104760
essbase.ru
Это гарантия того , что "лишний" раз MsSQL не пойдет селектить табличку , которя 5 раз встречается в различных вариантах в текущем запросе.

BOL - Understanding Plan Forcing
3 мар 14, 12:11    [15661539]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
Glory
BOL - Understanding Plan Forcing


чьерт, я не хочу становится еще и админом MsSQL и думать о специфике )
я хочу сесть и поехать )

з.ы. если чуть больше кода гарантирует одинаковое выполенение программы в различном окружении , то это значительно лучше чем лист рекомендаций по настроке для админа .
3 мар 14, 12:43    [15661847]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
Glory
Member

Откуда:
Сообщений: 104760
essbase.ru
я хочу сесть и поехать )

Вы хоть план выполнения смотрели ?
Или вы просто решили, что MsSQL автоматически "пойдет селектить табличку , которя 5 раз встречается в различных вариантах в текущем запросе."

essbase.ru
если чуть больше кода гарантирует одинаковое выполенение программы в различном окружении

Вот с чего вы решили, что ваш запрос теперь что-то гарантирует навсегда во всех окружениях ???
3 мар 14, 12:46    [15661879]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
Glory
Или вы просто решили, что MsSQL автоматически "пойдет селектить табличку , которя 5 раз встречается в различных вариантах в текущем запросе."


Glory , очень жуль что нет тебя рядом ) Мне так не хватает ответов на мои странные вопросы ) .
3 мар 14, 12:53    [15661964]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Если хотите "как проще", то используйте предварительный отбор во временную таблицу. Табличная переменная в контексте задачи, как я понимаю, не имеет особого смысла, только затрудняет синтаксическое восприятие.
3 мар 14, 13:56    [15662701]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
essbase.ru
но зато все под контролем
Оракловая привычка.
Но переубеждать бесполезно что держать в узде не составляет труда.

Может появится время и сможете понять. Что тупит в основном от тупости разрабов. ;)
3 мар 14, 15:35    [15663627]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
Mnior
Оракловая привычка


ага, называется сделал и забыл )
3 мар 14, 15:37    [15663653]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
essbase.ru
ага, называется сделал и забыл )
Скорее впендёрил и забыл.
4 мар 14, 03:01    [15666875]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
essbase.ru
Member

Откуда: http://essbase.ru/about
Сообщений: 1407
Mnior
Скорее впендёрил и забыл.


Удиветельная спасобность свои мысли вкладывать в чужие уста. Я очень сильно надеюсь, что в этом случае твои слова расходятся с твоими делами )
4 мар 14, 10:15    [15667577]     Ответить | Цитировать Сообщить модератору
 Re: CTE vs View vs Embedded Select  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5975
essbase.ru
Glory
BOL - Understanding Plan Forcing

чьерт, я не хочу становится еще и админом MsSQL и думать о специфике )

Вообще-то анализ планов исполнения и оптимизация запросов - самая что ни на есть часть работы разработчика. Хоть в оракле, хоть в MSSQL, хоть где.
4 мар 14, 11:02    [15667882]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить