Вход | Регистрация

  1  2
1С:Предприятие :: 1С:Предприятие 8 общая

Странное время выполнения запроса

Странное время выполнения запроса
Я
   triviumfan
 
10.05.18 - 11:53
Доброго дня, коллеги!
есть запрос
ВЫБРАТЬ
    Номенклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов.Объект
            И (ЗначенияСвойствОбъектов.Свойство = &Свойство)
ГДЕ
    НЕ Номенклатура.Ссылка В
                (ВЫБРАТЬ РАЗЛИЧНЫЕ
                    ПартииТоваровКомпанииОбороты.Номенклатура
                ИЗ
                    РегистрНакопления.ПартииТоваровКомпании.Обороты(&НачалоПериода, &КонецПериода, Год, ) КАК ПартииТоваровКомпанииОбороты)
    И ВЫБОР
            КОГДА ЗначенияСвойствОбъектов.Значение ЕСТЬ NULL 
                ТОГДА ИСТИНА
            ИНАЧЕ ЗначенияСвойствОбъектов.Значение = &Неликвид
        КОНЕЦ

Не понимаю, почему он выполняется дольше чем этот:
ВЫБРАТЬ
    Номенклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов.Объект
            И (ЗначенияСвойствОбъектов.Свойство = &Свойство)
ГДЕ
    НЕ Номенклатура.Ссылка В
                (ВЫБРАТЬ РАЗЛИЧНЫЕ
                    Номенклатура
                ИЗ
                    РегистрНакопления.ПартииТоваровКомпании Где Период Между &НачалоПериода и &КонецПериода)
    И ВЫБОР
            КОГДА ЗначенияСвойствОбъектов.Значение ЕСТЬ NULL 
                ТОГДА ИСТИНА
            ИНАЧЕ ЗначенияСвойствОбъектов.Значение = &Неликвид
        КОНЕЦ

Ведь 1й использует итоги (да, они рассчитаны за этот период), что, собственно, должно влиять на производительность сего запроса, но этого не происходит.

ЗЫ: задача - получить неликвидные товары (по ним нет движений за указанный период)
 
 
   Timon1405
 
101 - 11.05.18 - 11:16
(98) (100) вы не понимаете о чем пишете
соединение с составным типом тормозит когда из него получается реквизит через точку. а ЗначенияСвойствОбъектов.Объект КАК Номенклатура 
и так ссылочный тип номенклатура, не нужно ничего выражать
   xXeNoNx
 
102 - 11.05.18 - 11:36
(101) Откуда Вам знать что я понимаю, а что нет?  "Зарапартовался"
   VS-1976
 
103 - 11.05.18 - 11:42
Выполняется дольше, по тому что ты в первом запросе используешь виртуальную таблицу, которая выгребает в том числе и остатки, а во втором случае физическую таблицу. Так как номенклатура содержится в индексе, то чтение всей таблицы не происходит, а только индекса скорее всего. А вообще правильнее на мой взгляд писать запрос таким образом, но и он скорее всего не оптимален но достаточен:

ВЫБРАТЬ
    спрНоменклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК спрНоменклатура

    ЛЕВОЕ СОЕДИНЕНИЕ ( ВЫБРАТЬ РАЗЛИЧНЫЕ
        Номенклатура
    ИЗ
        РегистрНакопления.ПартииТоваровКомпании
    ГДЕ
        Период МЕЖДУ &НачалоПериода И &КонецПериода

    ) КАК тзФильтр
        ПО спрНоменклатура.Ссылка = тзФильтр.Номенклатура

    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК тзЗначения
        ПО спрНоменклатура.Ссылка = тзЗначения.Объект
         И тзЗначения.Свойство = &Свойство
ГДЕ
    тзФильтр.Номенклатура ЕСТЬ NULL
    И ( тзЗначения.Значение ЕСТЬ NULL Или тзЗначения.Значение = &Неликвид )
   Повелитель
 
104 - 11.05.18 - 11:44
(0)
(7) 1й выполнятся за 5с, а второй за 4с

Тема не о чем. Весь сыр бор из 1 секунды!

Допустим твой час стоит 1000 рублей.
Ты на форуме провисел 8 часов, затратил на оптимизацию 8000 рублей. Оптимизацию в 1 секунду?
Директор бы увидел, уволил.
   VS-1976
 
105 - 11.05.18 - 11:47
(104) На разном железе с разным периодом может быть разница не в секунду... А так нужно сразу стараться писать правильно и всё не будет никаких 2-х вариантов.
   xXeNoNx
 
106 - 11.05.18 - 11:52
(103) Соединение с подзапросом?
   Повелитель
 
107 - 11.05.18 - 11:55
(105) Если отчет используют десятки или сотни раз в день, то его стоит оптимизировать.

Если его используют 1 раз в неделю, а такие отчеты как в (0) используют не часто, да пусть он хоть 30 секунд выполняется.
   VS-1976
 
108 - 11.05.18 - 11:58
(107) Это да. Но мозг прокачивать всё же нужно, так что пусть тренеруется
  1  2

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует