Ответ вслух Middle Язык запросов спрашивают часто обновлено

Пакетные запросы и временные таблицы

Вопрос

Зачем нужны пакетные запросы и временные таблицы? Приведите пример, когда без них плохо.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Пакет это несколько запросов в одном тексте через точку с запятой, их выполняют одним вызовом Выполнить или ВыполнитьПакет. Временные таблицы дают сохранить промежуточный результат и использовать его в следующих запросах пакета.

Что должно прозвучать в ответе

  • Пакет: несколько запросов, разделённых «;», выполняются за один вызов

  • Временная таблица хранит промежуточный результат и используется в следующих запросах

  • Отбор один раз вместо повторения подзапроса

  • Индексирование временной таблицы для соединений

  • Пример: товары документа во ВТ, затем остатки и цены только по ним

Что могут спросить следом

  • Чем временная таблица лучше вложенного запроса?
  • Когда уничтожать временную таблицу?

Разбор

Пакет это несколько запросов в одном тексте через точку с запятой, их выполняют одним вызовом Выполнить или ВыполнитьПакет. Временные таблицы дают сохранить промежуточный результат и использовать его в следующих запросах пакета. Пример: при проведении сначала кладу товары документа в ВТТовары, сгруппировав и проиндексировав по номенклатуре, затем получаю остатки виртуальной таблицы с условием «Номенклатура В (ВЫБРАТЬ Номенклатура ИЗ ВТТовары)» и цены по тем же товарам. Без ВТ пришлось бы повторять подзапрос в каждом месте, а оптимизатору СУБД сложнее строить план для больших вложенных запросов. Когда таблица больше не нужна, уничтожаю её, чтобы не держать данные в tempdb.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.