Быстро выбрать обороты по каждой карте лояльности
Подскажите пожалуйста, как можно ускорить запрос, карт порядка 100тыс. Запрос идет больше часа.
Сама суть запроса , нужно по каждой карте лояльности выбрать обороты с самого начала
версия конфигурации УТ11 (11.3.4.185)
платформа 8.3.17.1549
Сама суть запроса , нужно по каждой карте лояльности выбрать обороты с самого начала
версия конфигурации УТ11 (11.3.4.185)
платформа 8.3.17.1549
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
КартыЛояльности.Ссылка КАК КартаЛояльности,
СУММА(ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот) КАК Сумма
ИЗ
Справочник.КартыЛояльности КАК КартыЛояльности
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты КАК ВыручкаИСебестоимостьПродажОбороты
ПО (КартыЛояльности.Партнер = ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Партнер)
И (КартыЛояльности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыКартЛояльности.Действует))
СГРУППИРОВАТЬ ПО
КартыЛояльности.Ссылка
;
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)Разбейте запрос на два.
В первой части выберете все карты с типом действует и партнёров которым карта принадлежит, и поместите во временную таблицу, потом вторым запросом выберете обороты из регистра в качестве отборов в виртуальной таблице можно использовать партнёров из предидущего запроса, и уже в результирующей таблице сделайте соединение.
У вас долго отрабатывает соединение виртуальной таблицы с физической скорее всего.
В первой части выберете все карты с типом действует и партнёров которым карта принадлежит, и поместите во временную таблицу, потом вторым запросом выберете обороты из регистра в качестве отборов в виртуальной таблице можно использовать партнёров из предидущего запроса, и уже в результирующей таблице сделайте соединение.
У вас долго отрабатывает соединение виртуальной таблицы с физической скорее всего.
(1) Если нет периода, то можно из реальной таблицы брать. Хотя платформа и так скорее всего поменяет.
Карты и ключи можно попробовать заранее во временную таблицу поместить, что-бы не было обращение через точку к аналитике.
Регистр оборотный - можно еще добавить агрегат непериодический только по измерению АналитикаУчетаПоПартнерам.
Карты и ключи можно попробовать заранее во временную таблицу поместить, что-бы не было обращение через точку к аналитике.
Регистр оборотный - можно еще добавить агрегат непериодический только по измерению АналитикаУчетаПоПартнерам.
Вот такой у меня получился запрос:
ВЫБРАТЬ РАЗЛИЧНЫЕ
КартыЛояльности.Ссылка КАК КартаЛояльности,
КартыЛояльности.Партнер КАК Партнер
ПОМЕСТИТЬ ВТ_Карты
ИЗ
Справочник.КартыЛояльности КАК КартыЛояльности
ГДЕ
КартыЛояльности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыКартЛояльности.Действует)
ИНДЕКСИРОВАТЬ ПО
КартаЛояльности,
Партнер
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Карты.КартаЛояльности КАК КартаЛояльности,
СУММА(ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот) КАК Сумма
ИЗ
ВТ_Карты КАК ВТ_Карты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(
,
,
,
АналитикаУчетаПоПартнерам.Партнер В
(ВЫБРАТЬ
ВТ_Карты.Партнер
ИЗ
ВТ_Карты)) КАК ВыручкаИСебестоимостьПродажОбороты
ПО ВТ_Карты.Партнер = ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Партнер
СГРУППИРОВАТЬ ПО
ВТ_Карты.КартаЛояльности
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот