#0
by miron16
Подскажите пожалуйста, в каких случаях следует использовать вложенный запрос, а в каких временные таблицы?
#1
by Рэйв
я лично временные использую только когда запрос супер навороченный или скуль ругается на 255 таблиц.
#2
by simol
Я наоборот, минимум вложенных, все во временные. Единственное могу сказать, что после мыслишь по другому, как-то проще, может это и плохо.
#3
by smitru
Зависит от количества таких обращений. если "разово", то наверное удобно использовать вложенный запрос, что бы не тратить ресурсы на механизм временных таблиц - если таких обращений много - из лучше выносить во временную. но опять же - для удобства отладки и логики иногда удобнее разворачивать навороты вложенных таблиц через временные таблицы
#4
by miron16
1. Если кто знает, какая позиция 1С по этому вопросу? 2. Просто у меня возник спор с коллегой, я говорил что если выборка данных используется только один раз - то он делает вложенным запросом, если к этой выборке обращаться приходится неоднократно - то веременная таблица. Коллега же утверждал что если выборка небольшая (до 100 строк) то временная таблица будет быстрее отрабатывать.
#5
by miron16
чем я руководствовался: Дял создания временной таблицы требуется 1- создать менеджер временных таблиц 2-запросом выбрать данные в неё 3 записать во временную память результат 4 сделать основной запрос к БД + к этому обекту (временной таблице) в если делать вложенным запросом - то только один запрос к БД
#11
by пента
для временных таблиц еще могут создаваться индексы главным в использовании временных таблиц считаю исключение переборов и циклов
#12
by H A D G E H O G s
SQL настолько суров, что обходится без переборов и циклов. Даже при работе с индексом.
#13
by H A D G E H O G s
Временная таблица храниться в SQL, в базе tempdb, и, в зависимости от ситуации, может быть скинута на жесткий диск.
#14
by H A D G E H O G s
Поэтому - не все йогурты одинаково полезны. Что для себя - то юзаю ВТ пакетно тогда, когда уже отфильтрованные данные нужны несколько раз, например в параметрах фильтра виртуальных таблиц по Остаткам на складе, и резервам на складе.
#20
by H A D G E H O G s
Гммм, там ангицкий, а я - ленив. Но спрошу - SQL создает ВТ - одним махом, или все же циклично читает источник и добавляет строки ?
#21
by H A D G E H O G s
Ну и поиск в ВТ - одним махом, или циклично по ее строкам/рекурсивно по узлам дерева поиска(для индекса)?
#24
by miron16
Сейчас пытаюсь найти информацию по данному вопросу на ИТС - пока безрезультатно. Хочется разобраться в этой теме максимально детально. Нет ли у вас источников, которые можно изучить кроме ИТС?
#25
by H A D G E H O G s
Несомненно. Просто ты так говоришь, что вот у меня возникло ощущение, что при исп. ВТ вообще циклов нет.
#28
by cost10
Лучше вообще не пользоваться вложенными запросами - такие запросы плохо обрабатываются на стороне субд (трудно найти оптимальный индекс и скорее всего будет сделан полный перебор).
#29
by МихаилМ
Применительно к 1с8 говорить о запросах без привязки к конкретной субд бессмысленно. опять же тут вопрос удобства разработки - поддержки что тоже важно.
#30
by IamAlexy
левая рука или правая нога? что выбрать? посоветуйте за и против.. ненужное планирую отрезать...
#31
by IamAlexy
чисто интересно: берем типический пакетный запрос.. в нем первым запросом создается виртуальная таблица а второй запро, ВНИМАНИЕ!, позапросом обращается к этой виртуальной таблице... типа что я должен выбрать?
#35
by miron16
IamAlexy - очень рад, что поднял Ваше настроение. В теме нет такой мысли что надо отказаться либо от вложенных запросов либо от временных таблиц вообще. Вопрос был в том - в каких случаях надо использовать одно а в каких другое? если вам предложат поесть - то наверное Вы выберите левую руку (надеюсь), или если вам предложат померять ботинок - то скорее всего правую ногу. так и сдесь - в таких то случаях применяют временную таблицу, а в таких то - вложенный запрос. Догадки и предположения у меня у самого есть... нет конкретного алгоритма...так как нет понимания их различаев. Если у кого есть это понимания, прошу разъяснить =) Спасибо.
#36
by МихаилМ
для отладки удобней применять врем таблицы для наглядности (понятности) текста запроса - тоже если увал объединение в 20-40 таблиц такой мега джоин отлаживать очень ссложно проще разбить на части и олаживать по частям В этом случае нужно обратить внимание применительно к 1с8 какие ограничения на создание индексов ВТ существуют для оценки производительности выборки запроса принцип декомпозиции при создании ПО желательно соблюдать. про остальное я указал
#39
by nbIx
В 8.0 я писал огроменные запросы на 300-500 строк. С помощью временных таблиц можно разбить на определенные смысловые блоки, причем я тоже задавался этим вопросом в каком случае производительность выше. Конкретно в моих случаях время выполнения запросов не отличалось даже на 10%.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Управляемая форма, обновление отображения реквизитов
- Конфигурация узла распределенной ИБ не соответствует ожидаемой!
- Ошибка загрузки компоненты 'help'
- Хранилище значений в табличной части справочника 8.2
- Есть обработка проверки правильности отображения движений документа в регистрах учета
- Экзамен на преподавателя ЦСО
- Построитель отчета, куча вопросов
- Динамический список + группировка
- Проблемы с открытием базы Access
- Не работает интерактивное удаление помеченных объектов
- Управляемая форма: вывод элементов подчиненного справочника
- Программная нумерация документов
- Типы оплаты в fr_comm.ert
- Механизм продажи товара с разным качеством в УТ 10.3
- как можно подружить СКД и диаграму Ганта
- Регистр сведений СобытияКалендаряПользователя в 1С 8 УПП
- 8.2 Установить флажок в табличное поле
- УТ 10.3 печать этикеток, ошибка совместного доступа к файлу
- Таблица значений: получить/установить значение колонки по номеру строки
- Не заходит в модуль при отладке