Имя: Пароль:
1C
 
Регистр остатков. Является ли необходимым наложение параметра в запросе?
0 ЛисИзЛеса
 
18.05.15
08:26
Дан запрос:
Запрос.Текст =
        "ВЫБРАТЬ
        |    МАКСИМУМ(ЕСТЬNULL(ОстаткиТоваровОстатки.КоличествоОстаток, 0)) КАК КоличествоОстаток,
        |    СУММА(РасходнаяТовары.Количество) КАК Количество,
        |    МАКСИМУМ(ЕСТЬNULL(ОстаткиТоваровОстатки.СтоимостьОстаток, 0)) КАК СтоимостьОстаток,
        |    РасходнаяТовары.Номенклатура КАК Номенклатура
        |ИЗ
        |    Документ.Расходная.Товары КАК РасходнаяТовары
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(
        |                &МоментВремени,
        |                Номенклатура В
        |                    (ВЫБРАТЬ
        |                        РасходнаяТовары.Номенклатура
        |                    ИЗ
        |                        Документ.Расходная.Товары КАК РасходнаяТовары
        |                    ГДЕ
        |                        РасходнаяТовары.Ссылка = &Ссылка)) КАК ОстаткиТоваровОстатки
        |        ПО РасходнаяТовары.Номенклатура = ОстаткиТоваровОстатки.Номенклатура
        |ГДЕ
        |    РасходнаяТовары.Ссылка = &Ссылка
        |    И НЕ РасходнаяТовары.Номенклатура.Услуга
        |
        |СГРУППИРОВАТЬ ПО
        |    РасходнаяТовары.Номенклатура";


Хотелось бы уточнить является ли необходимым, при условии что обрабатывается большой объем данных, в этом запросе вот это ограничение:
Номенклатура В
        |                    (ВЫБРАТЬ
        |                        РасходнаяТовары.Номенклатура
        |                    ИЗ
        |                        Документ.Расходная.Товары КАК РасходнаяТовары
        |                    ГДЕ
        |                        РасходнаяТовары.Ссылка = &Ссылка)
1 shuhard_серый
 
18.05.15
08:32
(0) [является ли необходимым]
нет
2 ЛисИзЛеса
 
18.05.15
08:32
Может стоит сначала сделать запрос к документу и поместить его в временную таблицу и далее делать соединение с регистром остатков, накладывая ограничение на параметры виртуальной таблицы (как выше)?
3 ЛисИзЛеса
 
18.05.15
08:34
(1) То есть ни на производительность, ни на объем выборки из таблицы регистра, отсутствие этого ограничения ни как повлиять не может?
4 EugeniaK
 
18.05.15
08:41
(3) Может.
Но необходимым не является.
Если в таблице десяток документов, то без него быстрее.
Если несколько миллионов, то нужно писать вообще через временную таблицу.
5 Lamer1C
 
18.05.15
08:53
(0) при больших объемах данных это запрос будет выполняться очень долго, даже с условием..
6 Фрэнки
 
18.05.15
09:38
Желательно все-таки уточнять, что большой объем данных - это вообще в какой таблице: таблице Номенклатура или таблице регистра какого-то?
И условие отбора Номенклатура В (...) сколько раз используется в запросе, если больше чем один раз, то обязательно создать Временную таблицу и отбирать из нее.

Вообще, накладывать отбор Номенклатура В (...) очень хорошо ускоряет работу запроса, но заметный эффект будет в действительно многократно повторяемых отборах в тексте и на действительно больших объемах данных
7 vde69
 
18.05.15
09:40
Бешеные тормоза после переноса на MS SQL

читать начиная с 114 поста
8 ЛисИзЛеса
 
18.05.15
09:54
(6) Именно в регистре остатков.
То есть всего позиции в документе, допустим, десятки.
В регистре остатков порядка нескольких тысяч вариантов по номенклатуре.
То есть всё-таки временная таблица сделанная по данным документа.
9 hhhh
 
18.05.15
09:59
(8) ну если несколько тысяч, то не стоит париться. Вот если от ста тысяч тогда да.
Закон Брукера: Даже маленькая практика стоит большой теории.