Имя: Пароль:
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) ну если несколько тысяч, то не стоит париться. Вот если от ста тысяч тогда да.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn