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

Откуда:
Сообщений: 96
Доброго дня,

Есть теоретический вопрос.
На форуме не нашел похожей темы, а на msdn - сравнения производительности подходов.

Пишу запрос.
В нем есть несколько блоков, которые можно вынести в with перед основным запросом или собрать во временные таблицы и потом уже использовать их.

Если данных порядка 100 тыщ в блоках и их больше 3, что быстрее работать будет?

With a as (),b as (),c as()
select

или

select
into #a

select
into #b

select
into #c

select
21 фев 18, 15:04    [21208417]     Ответить | Цитировать Сообщить модератору
 Re: много with или временные таблицы  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20527
holod-iinna
Если данных порядка 100 тыщ в блоках и их больше 3
Посчитайте требуемую память - если нагрузка от таких объёмов на сервер явно невелика, лучше использовать CTE... при условии, что не удаётся получить серьёзного прироста в скорости за счёт индексации временной таблицы. Ну а если временная таблица может быть использована повторно в рамках сессии, несомненно надо отдать предпочтение ей...
Это всё, конечно, в самом первом приближении.
21 фев 18, 15:15    [21208485]     Ответить | Цитировать Сообщить модератору
 Re: много with или временные таблицы  [new]
Тяп-ляп
Member

Откуда: Москва
Сообщений: 797
Разработчики часто выносят повторяющиеся части запроса в cte.
Запрос получается короткий, выразительный и удобочитаемый.
Это хорошо до тех пор, пока итоговый запрос сравнительно небольшой, сервер может выбрать быстрый план, мало повторных чтений одних и тех же данных.
При усложнении запроса вероятность выбора быстрого плана снижается, много повторных чтений.
Тогда вариант с временными таблицами может сильно выиграть.
21 фев 18, 15:51    [21208622]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить