Имя: Пароль:
1C
1С v8
Подскажите, что не оптимально в запросе?
0 egmyh
 
22.02.20
14:06
"ВЫБРАТЬ
    |    ТоварыНаСкладахОбороты.Период,
    |    ТоварыНаСкладахОбороты.Склад,
    |    ТоварыНаСкладахОбороты.Номенклатура,
    |    ДвижениеТоваровОбороты.Распоряжение.АдресДоставки КАК АдресДоставки,
    |    СУММА(ТоварыНаСкладахОбороты.ВНаличииОборот) КАК ВНаличииОборот,
    |    СУММА(ТоварыНаСкладахОбороты.КОтгрузкеОборот) КАК КОтгрузкеОборот,
    |    СУММА(ДвижениеТоваровОбороты.ПланируемоеПоступлениеОборот) КАК ПланируемоеПоступлениеОборот,
    |    СУММА(ДвижениеТоваровОбороты.ПланируемаяОтгрузкаСоСкладаОборот) КАК ПланируемаяОтгрузкаСоСкладаОборот
    |ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, Неделя, ) КАК ТоварыНаСкладахОбороты
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДвижениеТоваров.Обороты(&ДатаНачала, &ДатаОкончания, Неделя, ) КАК ДвижениеТоваровОбороты
    |        ПО ТоварыНаСкладахОбороты.Номенклатура = ДвижениеТоваровОбороты.Номенклатура
    |            И ТоварыНаСкладахОбороты.Склад = ДвижениеТоваровОбороты.Склад
    |
    |СГРУППИРОВАТЬ ПО
    |    ТоварыНаСкладахОбороты.Номенклатура,
    |    ТоварыНаСкладахОбороты.Склад,
    |    ДвижениеТоваровОбороты.Распоряжение.АдресДоставки,
    |    ТоварыНаСкладахОбороты.Период";
1 ДенисЧ
 
22.02.20
14:26
Левые соединения с виртуальными таблицами сильно не рекомендуются 1сом.
2 ДенисЧ
 
22.02.20
14:26
Да и правые тоже.
И даже внутренние.
3 egmyh
 
22.02.20
14:46
А как нужно, через временные таблицы вроде нет смысла?
4 shiling
 
22.02.20
14:47
А чем у вас отличаются регистры? Для чего служат?
(3) Почему нет смысла?
5 Провинциальный 1сник
 
22.02.20
14:55
Соединение с виртуальной таблицей == соединение с подзапросом. Подзапрос создает неявную временную таблицу, но в отличие от явной временной таблицы - на момент компиляции запроса оптимизатор СУБД не имеет информации о статистике данных в ней. И например постгрес очень часто ошибается, выбирая неверный план запроса, при котором идет соединение вложенными циклами с огромным массивом данных. При использовании же явных временных таблиц и пакетных запросов в постгресе последних версий задействуется патч online_analyze и таких ошибок не происходит, в результате запрос выполняется намного эффективнее.