powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизация задачи
4 сообщений из 4, страница 1 из 1
Оптимизация задачи
    #39315360
Adylov Timur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Помогите оптимизировать задачу.
У меня на вход подается таблица с полями ТП, МХ, Дата начала периода и Дата окончания периода . Кол-во записей 50 млн. Пара МХ и ТП уникальна.
Также есть таблицы Группы МХ и группы ТП, которые связываются с предыдущей таблицей, связи "один ко многим" (одна Группа МХ - несколько МХ, одна группа ТП - несколько ТП).

Последняя таблица содержит некоторые значения для пар Группа МХ - Группа ТП .
Таблица содержит следующие поля Группа МХ, Группа ТП, неделя, продажи . Кол-во записей 4 млн.

Задача: необходимо вычислить агрегаты для каждой пары МХ-ТП по продажам за указанный промежуток.
Проблема: Связь между входной таблицы и таблицы с необходимыми значениями - "многие ко многим".
Прошу помочь с оптимизацией

Заранее всем спасибо!
...
Рейтинг: 0 / 0
Оптимизация задачи
    #39315366
Avotge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПроблема: Связь между входной таблицы и таблицы с необходимыми значениями - "многие ко многим".
Прошу помочь с оптимизацией
Выкладывай свой вариант решения, а дальше будет видно, что оптимизировать.
А пока больше похоже ленивого студента )
...
Рейтинг: 0 / 0
Оптимизация задачи
    #39315389
Adylov Timur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Avotge,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
select 
             m.t_id_ws       -- Магазин
            ,m.t_id_art      -- Товар
            ,t_date1           -- дата начала первого периода
            ,t_date2           -- дата окончания первого периода
            ,t_date3           -- дата начала второго периода
            ,t_date4           -- дата окончания второго периода
            ,trunc(c.t_week/100) t_year -- год
            ........ -- вычисление агрегатов
        from clusters_ws_clusters_art_tbl c -- Кластеры (группы) ТП
        join clusters_article_tbl ca on c.t_id_cluster_art = ca.t_id_cluster_art -- Кластеры (группы) МХ
        join clusters_warehouse_tbl cw on c.t_id_cluster_ws = cw.t_id_cluster_ws -- Таблица с необходимыми измерениями
        join my_table_in m on cw.t_id_ws = m.t_id_ws and ca.t_id_art = m.t_id_art -- Входная таблица
        join recursion_day r on r.num_week = mod(c.t_week,100) --  recursion_day - таблица соответствия дней и недель
       where r.num_day between day1 and day2 and trunc(c.t_week/100) < extract (year from trunc(t_date1,'Y')+r.num_day-1)
          or r.num_day between day3 and day4 and trunc(c.t_week/100) < extract (year from trunc(t_date3,'Y')+r.num_day-1)          
       group by m.t_id_ws
               ,m.t_id_art
               ,t_date1
               ,t_date2
               ,t_date3
               ,t_date4
               ,trunc(c.t_week/100)
...
Рейтинг: 0 / 0
Оптимизация задачи
    #39315425
Avotge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Adylov TimurПроблема: Связь между входной таблицы и таблицы с необходимыми значениями - "многие ко многим".
В dwh и olap я чайнег, но суть запроса до конца не ясна.
Речь о некоем универсальном механизме генерации запросов для разных "входных" таблиц?
Если так, то таблица "измерений" должна использоваться только на этапе самой генерации текста запроса (список полей агрегатов и т.п.), зачем втыкать ее в сам запрос не понятно. И возможно, если вывести запрос полностью с агрегатами и планом, станет немного понятнее ). А еще лучше для начала сузить задачу до упрощенного примера, отражающего суть на примере двух (или минимального кол-ва таблиц).
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизация задачи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]