Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 With против While  [new]
DimaMorozov
Member

Откуда:
Сообщений: 79
Что будет работать быстрее, для перебора дерева ?
20 июл 11, 11:05    [10998774]     Ответить | Цитировать Сообщить модератору
 Re: With против While  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
DimaMorozov,

какой абстрактный вопрос!

Если бы что-то всегда работало быстрее чего-то,
то зачем, спрашивается, существовали бы оба?
20 июл 11, 11:08    [10998797]     Ответить | Цитировать Сообщить модератору
 Re: With против While  [new]
AmKad
Member

Откуда:
Сообщений: 5308
iap
Если бы что-то всегда работало быстрее чего-то,
то зачем, спрашивается, существовали бы оба?

Например, для совместимости версий.
20 июл 11, 11:10    [10998815]     Ответить | Цитировать Сообщить модератору
 Re: With против While  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
AmKad
iap
Если бы что-то всегда работало быстрее чего-то,
то зачем, спрашивается, существовали бы оба?

Например, для совместимости версий.
Всё равно вопрос темы должен быть максимально конкретным.
Разве не так?
20 июл 11, 11:12    [10998836]     Ответить | Цитировать Сообщить модератору
 Re: With против While  [new]
DimaMorozov
Member

Откуда:
Сообщений: 79
Уточним :)

Есть таблица
id
id_parent
Name

Так вот, что быстрее будет работать, построение веток через While или With
20 июл 11, 11:12    [10998840]     Ответить | Цитировать Сообщить модератору
 Re: With против While  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Ну так измерь и получишь результат для твоего случая.
20 июл 11, 11:16    [10998884]     Ответить | Цитировать Сообщить модератору
 Re: With против While  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
DimaMorozov
Уточним :)

Есть таблица
id
id_parent
Name

Так вот, что быстрее будет работать, построение веток через While или With
Почти одинаково, но с сте чуть быстрее. Насколько - зависит от размеров выборки и количества уровней - чем больше, тем меньше разница.
20 июл 11, 11:21    [10998910]     Ответить | Цитировать Сообщить модератору
 Re: With против While  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
alexeyvg
DimaMorozov
Уточним :)

Есть таблица
id
id_parent
Name

Так вот, что быстрее будет работать, построение веток через While или With
Почти одинаково, но с сте чуть быстрее. Насколько - зависит от размеров выборки и количества уровней - чем больше, тем меньше разница.
И CTE, и WHILE можно написать по-разному!
Как можно оценивать то, чего нет??

Да и таблицу список имён полей никак не характеризует (типы, индексы и т.п. - где?)
20 июл 11, 11:27    [10998942]     Ответить | Цитировать Сообщить модератору
 Re: With против While  [new]
Владимир СА
Member

Откуда:
Сообщений: 7915
DimaMorozov
Что будет работать быстрее, для перебора дерева ?
А покажите пожалуйста скрипт запроса на построение дерева с With а затем с While, но без СТЕ.
20 июл 11, 11:40    [10999047]     Ответить | Цитировать Сообщить модератору
 Re: With против While  [new]
AmKad
Member

Откуда:
Сообщений: 5308
iap
AmKad
пропущено...

Например, для совместимости версий.
Всё равно вопрос темы должен быть максимально конкретным.
Разве не так?

Конечно.
20 июл 11, 11:50    [10999141]     Ответить | Цитировать Сообщить модератору
 Re: With против While  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
iap
alexeyvg
Почти одинаково, но с сте чуть быстрее. Насколько - зависит от размеров выборки и количества уровней - чем больше, тем меньше разница.
И CTE, и WHILE можно написать по-разному!
Как можно оценивать то, чего нет??

Да и таблицу список имён полей никак не характеризует (типы, индексы и т.п. - где?)
Ну разумеется, при этом сравнении имеется в виду одинаковый алгоритм. Иначе вообще бессмысленно сранивать, например, селект и вызов esp с запуском внешнего приложения :-)

Например, цикл по уровням дерева. Но собственно, это самый быстрый и самый применяемый вариант для раскрыытия дерева.

Рекурсивный CTE - это же просто синтаксически отличаящаяся реализация цикла, соответственно и разницы в скорости не будет, за исключением накладных расходов на control-flow стейтменты для WHILE.
20 июл 11, 14:07    [11000159]     Ответить | Цитировать Сообщить модератору
 Re: With против While  [new]
Fire83
Member

Откуда: Гомель-Минск
Сообщений: 474
DimaMorozov,

Уже тестили
20 июл 11, 20:19    [11002698]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить