8.х Долго выполняется запрос

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Svb, 19 сен 2017.

  1. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    1.091
    Симпатии:
    23
    Баллы:
    29
    В справочнике порядка 15 тыс товаров. Запрос выполняется 20 минут. Хотел бы сократить до 5 :)

    Код:
    ВЫБРАТЬ
        СпрНоменклатура.Ссылка,
        ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
        СпрНоменклатура.ПометкаУдаления КАК ПометкаУдаления,
        СпрНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
        СпрНоменклатура.ТипНоменклатуры КАК ТипНоменклатуры,
        СпрНоменклатура.НеАктивный КАК ПризнакНеАктивный,
        СпрНоменклатура.ФайлКартинки,
        СпрНоменклатура.ФайлКартинки.ТипХраненияФайла,
        СпрНоменклатура.ФайлКартинки.Расширение,
        СпрНоменклатура.ФайлКартинки.ФайлХранилище,
        ПрисоединенныеФайлы.ХранимыйФайл
    ПОМЕСТИТЬ ВТ_Товары
    ИЗ
        Справочник.Номенклатура КАК СпрНоменклатура
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
            ПО СпрНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПрисоединенныеФайлы КАК ПрисоединенныеФайлы
            ПО СпрНоменклатура.ФайлКартинки = ПрисоединенныеФайлы.ПрисоединенныйФайл
    ГДЕ
        СпрНоменклатура.ВидНоменклатуры = &ВидНоменклатуры
        И НЕ СпрНоменклатура.ЭтоГруппа  И СпрНоменклатура.Ссылка В (&МассивИзмененийНоменклатуры)
        ИНДЕКСИРОВАТЬ ПО
            Ссылка
    ;
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВложенныйЗапрос.Признак,
        ВложенныйЗапрос.СкладСкладПоставщика,
        ВложенныйЗапрос.Регион,
        ВложенныйЗапрос.РегионКодГеопозиции
    ПОМЕСТИТЬ КодыГеопозиции
    ИЗ
        (ВЫБРАТЬ
            1 КАК Признак,       
            СкладыРегионы.Ссылка КАК СкладСкладПоставщика,       
            СкладыРегионы.БизнесРегион КАК Регион,
            СкладыРегионы.БизнесРегион.КодГеопозиции КАК РегионКодГеопозиции
        ИЗ
            Справочник.Склады.Регионы КАК СкладыРегионы
       
        ОБЪЕДИНИТЬ ВСЕ
       
        ВЫБРАТЬ
            2 КАК Признак,       
            СкладыПоставщиковРегионы.Ссылка,
            СкладыПоставщиковРегионы.БизнесРегион,
            СкладыПоставщиковРегионы.БизнесРегион.КодГеопозиции
        ИЗ
            Справочник.СкладыПоставщиков.Регионы КАК СкладыПоставщиковРегионы) КАК ВложенныйЗапрос
    
    СГРУППИРОВАТЬ ПО
        ВложенныйЗапрос.Признак,
        ВложенныйЗапрос.СкладСкладПоставщика,
        ВложенныйЗапрос.Регион,
        ВложенныйЗапрос.РегионКодГеопозиции
    ;       
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        КодыГеопозиции.Признак,
        ВТ_Товары.Ссылка,
        ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) - ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеОстаток, 0) КАК СвободныйОстаток, 
        КодыГеопозиции.СкладСкладПоставщика КАК СкладСвободногоОстатка,
        КодыГеопозиции.Регион,
        КодыГеопозиции.РегионКодГеопозиции,   
        ВТ_Товары.Цена КАК Цена,
        ВТ_Товары.ПометкаУдаления КАК ПометкаУдаления,
        ВТ_Товары.ВидНоменклатуры КАК ВидНоменклатуры,
        ВТ_Товары.ТипНоменклатуры КАК ТипНоменклатуры,
        ВТ_Товары.ПризнакНеАктивный,
        ВТ_Товары.ФайлКартинки,
        ВТ_Товары.ФайлКартинки.ТипХраненияФайла,
        ВТ_Товары.ФайлКартинки.Расширение,
        ВТ_Товары.ФайлКартинки.ФайлХранилище,   
        ВТ_Товары.ХранимыйФайл
        ,ЗНАЧЕНИЕ(Справочник.НоменклатураПоставщиков.ПустаяСсылка) КАК НоменклатураПоставщика,
        ЗНАЧЕНИЕ(Справочник.СкладыПоставщиков.ПустаяСсылка) КАК СкладПоставщика,
        ЗНАЧЕНИЕ(Справочник.ИнформацияДляСайта.ПустаяСсылка) КАК ИнформацияДляСайта,
        "" КАК ИнформацияДляСайтаПриоритет         
    ПОМЕСТИТЬ ВТ_ТоварыПоРегионам       
    ИЗ
        ВТ_Товары КАК ВТ_Товары
        ЛЕВОЕ СОЕДИНЕНИЕ КодыГеопозиции КАК КодыГеопозиции
            ПО КодыГеопозиции.Признак = 1       
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(, Склад В (&СписокСкладов)) КАК СвободныеОстаткиОстатки
            ПО ВТ_Товары.Ссылка = СвободныеОстаткиОстатки.Номенклатура
            И КодыГеопозиции.СкладСкладПоставщика = СвободныеОстаткиОстатки.Склад   
       ГДЕ
              (ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) - ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеОстаток, 0)) > 0
               
    ОБЪЕДИНИТЬ ВСЕ
               
    ВЫБРАТЬ
        КодыГеопозиции.Признак,
        ВТ_Товары.Ссылка,
        0,
        ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка),
        КодыГеопозиции.Регион,
        КодыГеопозиции.РегионКодГеопозиции,
        ВТ_Товары.Цена КАК Цена,
        ВТ_Товары.ПометкаУдаления,
        ВТ_Товары.ВидНоменклатуры,
        ВТ_Товары.ТипНоменклатуры,
        ВТ_Товары.ПризнакНеАктивный,
        ВТ_Товары.ФайлКартинки,
        ВТ_Товары.ФайлКартинки.ТипХраненияФайла,
        ВТ_Товары.ФайлКартинки.Расширение,
        ВТ_Товары.ФайлКартинки.ФайлХранилище,
        ВТ_Товары.ХранимыйФайл
        ,РекомендованныйПоставщикПриПродажиПодЗаказ.НоменклатураПоставщика,
        РекомендованныйПоставщикПриПродажиПодЗаказ.СкладПоставщика,
        РекомендованныйПоставщикПриПродажиПодЗаказ.СкладПоставщика.ИнформацияДляСайта КАК ИнформацияДляСайта,
        ЕСТЬNULL(РекомендованныйПоставщикПриПродажиПодЗаказ.СкладПоставщика.ИнформацияДляСайта.Приоритет, "") КАК ИнформацияДляСайтаПриоритет        
    ИЗ
        ВТ_Товары КАК ВТ_Товары
        ЛЕВОЕ СОЕДИНЕНИЕ КодыГеопозиции КАК КодыГеопозиции
            ПО КодыГеопозиции.Признак = 2
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РекомендованныйПоставщикПриПродажиПодЗаказ КАК РекомендованныйПоставщикПриПродажиПодЗаказ
            ПО ВТ_Товары.Ссылка = РекомендованныйПоставщикПриПродажиПодЗаказ.Номенклатура
            И КодыГеопозиции.Регион = РекомендованныйПоставщикПриПродажиПодЗаказ.БизнесРегион       
    ИНДЕКСИРОВАТЬ ПО
        Ссылка,
        НоменклатураПоставщика
    ;
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВТ_Товары.Ссылка,
        ВТ_Товары.СвободныйОстаток,          
        ВТ_Товары.СкладСвободногоОстатка,
        ВТ_Товары.РегионКодГеопозиции,       
        ВТ_Товары.Цена,
        ВТ_Товары.Ссылка.Вес КАК Вес,
        ВТ_Товары.Ссылка.Объем КАК Объем,
        ВТ_Товары.ПометкаУдаления,
        ВТ_Товары.ВидНоменклатуры,
        ВТ_Товары.ТипНоменклатуры КАК ТипНоменклатуры,
        ВТ_Товары.ПризнакНеАктивный КАК ПризнакНеАктивный,
        ВТ_Товары.ФайлКартинки,
        ВТ_Товары.ФайлКартинкиТипХраненияФайла,
        ВТ_Товары.ФайлКартинкиРасширение,
        ВТ_Товары.ФайлКартинкиФайлХранилище,
        ВТ_Товары.ХранимыйФайл,
        ВТ_Товары.НоменклатураПоставщика,
        ВТ_Товары.СкладПоставщика,
        ВТ_Товары.СкладПоставщика.Код КАК СкладПоставщикаКод,
        ЕСТЬNULL(ОстаткиТоваровУПоставщиков.ВНаличии,0) КАК ВНаличииУПоставщиков,
        ВТ_Товары.ИнформацияДляСайта,
        ВТ_Товары.ИнформацияДляСайтаПриоритет,
        ВТ_Товары.Ссылка.ДополнительныеРеквизиты.(
            Свойство КАК Свойство,
            Значение КАК Значение,
            ТекстоваяСтрока КАК ТекстоваяСтрока
        ) КАК ДополнительныеРеквизиты
    , СпрНоменклатура.Наименование КАК Наименование
    , СпрНоменклатура.НаименованиеПолное КАК НаименованиеПолное
    , СпрНоменклатура.Новинка КАК Новинка
    , СпрНоменклатура.Производитель КАК Производитель
    , СпрНоменклатура.Распродажа КАК Распродажа
    , СпрНоменклатура.Цвет КАК Цвет
    , СпрНоменклатура.Артикул КАК Артикул
    , СпрНоменклатура.ВыгружатьНаЯндекс КАК ВыгружатьНаЯндекс
    , СпрНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения
    , СпрНоменклатура.Код КАК Код
    , СпрНоменклатура.Модель КАК Модель
    , СпрНоменклатура.Модель.Сезон КАК МодельСезон
    , СпрНоменклатура.Модель.ТипАвтомобиля КАК МодельТипАвтомобиля
    , СпрНоменклатура.Модель.ТипАвтошины КАК МодельТипАвтошины
    , СпрНоменклатура.Модель.РисунокПротектора КАК МодельРисунокПротектора
    , СпрНоменклатура.Модель.Шиповка КАК МодельШиповка
    , СпрНоменклатура.Модель.ШиныДляБездорожья КАК МодельШиныДляБездорожья
    ИЗ
        ВТ_ТоварыПоРегионам КАК ВТ_Товары
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
                ПО ВТ_Товары.Ссылка = СпрНоменклатура.Ссылка       
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОстаткиТоваровУПоставщиков КАК ОстаткиТоваровУПоставщиков
            ПО ВТ_Товары.Ссылка = ОстаткиТоваровУПоставщиков.Номенклатура
                И ВТ_Товары.НоменклатураПоставщика = ОстаткиТоваровУПоставщиков.НоменклатураПоставщика
                И ВТ_Товары.СкладПоставщика = ОстаткиТоваровУПоставщиков.СкладПоставщика
    
    УПОРЯДОЧИТЬ ПО
        ВТ_Товары.ВидНоменклатуры
    ИТОГИ
        СУММА(СвободныйОстаток),
        МАКСИМУМ(ВТ_Товары.СкладПоставщика),
        МАКСИМУМ(ИнформацияДляСайта),
        МАКСИМУМ(ВНаличииУПоставщиков),
        МАКСИМУМ(ИнформацияДляСайтаПриоритет)
    ПО ВТ_Товары.Ссылка, ВТ_Товары.РегионКодГеопозиции
  2. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    5.064
    Симпатии:
    185
    Баллы:
    104
    А на каком пакете больше всего тормозит?
    По пакетам пробовал выполнять?
    --- Объединение сообщений, 19 сен 2017 ---
    У тебя в первом пакете я правильно понимаю что выбирается "хранилище" с картинкой? зачем?
    --- Объединение сообщений, 19 сен 2017 ---
    Во втором пакете убери вложенный запрос и переделай на ВТ.
    Последнее редактирование: 19 сен 2017
  3. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    1.091
    Симпатии:
    23
    Баллы:
    29
    По пакетам пробую. Первые три подзапроса - 20 секунд. Засада в последнем.
  4. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    5.064
    Симпатии:
    185
    Баллы:
    104
    Убери из последнего запроса табличную часть, агрегатные функции, итоги и упорядочивание и посмотри за сколько отработает.
  5. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    164
    Баллы:
    104
    20 минут... скок оперативы на серваке?:)
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104
    хрень какая-то... зачем обращаться к справочнику номенклатура и засовывать во временную таблицу, чтобы потом в последнем запросе опять делать соединение временной таблицы к этому же справочнику? Нельзя все за один раз получить что-ли? лучше бы вместо этого соединение к справочнику Модель сделал.


    ВТ_Товары.Ссылка.Вес КАК Вес,
    ВТ_Товары.Ссылка.Объем КАК Объем,

    это чего? просто ВТ_Товары.Вес?

    ВТ_Товары.Ссылка.ДополнительныеРеквизиты.(
    Свойство КАК Свойство,
    Значение КАК Значение,
    ТекстоваяСтрока КАК ТекстоваяСтрока

    вот это тоже выкинуть с целью замера производительности.

    и индексирование я бы тоже попробовал повыкидывать.
  7. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    1.091
    Симпатии:
    23
    Баллы:
    29
    Всего 64ГБ. Это тестовый сервер. SQL съел 17ГБ, 3 rphosta.
    Все кроме последнего пакета выполняется 20 секунд.
    В последнем пакете убрал запрос к доп. свойствам, группировки и итоги по группировкам. Время выполнения в лучшую сторону не изменилось (20 мин).
    --- Объединение сообщений, 20 сен 2017 ---
    Это типовая 11.1 с некоторыми доработками (соединение со справочником номенклатура - типовое). -Banhappy-
    --- Объединение сообщений, 20 сен 2017 ---
    shurikvz, я попробовал все о чем ты говоришь (убрал соединение со справочником номенклатура в последнем пакете, добавил в первое (так и было в типовой, я не верно выше написал. это уже результаты моих экспериментов)). Содение с табличной чатью (доп.реквизитами) тоже пробовал (Борис выше предлагал). Индексирование я тоже добавлял в процессе поиска, что с ним, что без - все равно 20 минут.
    Последнее редактирование: 20 сен 2017
  8. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    5.064
    Симпатии:
    185
    Баллы:
    104
    А если убрать соединение с регистром "ОстаткиТоваровПоставщика"? Для эксперимента.
    --- Объединение сообщений, 20 сен 2017 ---
    Кстати "ОстаткиТоваровУПоставщика" он периодический?
  9. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104
    берешь запрос.
    убираешь в последнем запросе сначало одно левое соединение, потом другое. выясняешь какое из них дает такое замедление. (ну я не знаю сколько у тебя там в итоге соединений получилось, вобщем выясни какое из них дает замедление).
  10. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    1.091
    Симпатии:
    23
    Баллы:
    29
    Разобрался.
    Замедление дает этот говнокусок:
    Вынес получение допреквизитов в отдельный пакет.
    В итоге в результате запроса получаю основную выборку (без доп.реквизитов) и таблицу значений допреквизитов по всей номенклатуре. Индексирую полученную таблицу допреквизитов. И дальше, уже при обходе основной выборки, делаю поиск значений допреквизитов по индексированной таблице значений. Время сократилось до 5 минут, то бишь в 4 раза.
    П.С. Если не производить индексацию таблицы значений с доп.реквизитами, то получается еще медленнее в итоге.
  11. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104
    Ну тк.. Подозрение в этом у меня еще вчера было.

    Естественно. При поиске по большой ТЗ - поля поиска необходимо индексировать.
  12. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.890
    Симпатии:
    1.030
    Баллы:
    204
    эээ....а если сделать таки левое соединение с табличкой доп реквизитов?
  13. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    1.091
    Симпатии:
    23
    Баллы:
    29
    Пробовал. Все равно шляпа (