powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Оптимизация запроса
11 сообщений из 11, страница 1 из 1
Оптимизация запроса
    #33802206
Garryх
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, ситуация следующая:

есть таблица фактов, содержащая данные по продажам (дата, ID номенклатуры, .....и.т.д.)

есть таблица цен, со следующими полями:

Дата начала периода действия
Дата конца периода действия
Тариф (тип цены)
ID номенклатуры
Цена

в конечной "витрине"(view) необходимо вытянуть порядка 7 цен по различным прайс-листам (в т.ч. себестоимость и др...)

время выполнения запроса с учетом цен увеличивается более чем в 2 раза по сравнению с view без цен..

кто-нибудь сталкивался с подобной задачей? подскажите плз, как можно более оптимально сделать схему хранения и выполнения запросов к такой информации??
...
Рейтинг: 0 / 0
Оптимизация запроса
    #33802517
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поясните:
Garryхв конечной "витрине"(view) необходимо вытянуть порядка 7 цен по различным прайс-листам (в т.ч. себестоимость и др...)
т.е. создать PivotTable?

Garryхвремя выполнения запроса с учетом цен увеличивается более чем в 2 раза по сравнению с view без цен..
абсолютные цифры назовите, а то 1 сек от 2 сек тоже в 2 раза отличаются...
да и на сам запрос неплохо бы посмотреть

Garryхкак можно более оптимально сделать схему хранения и выполнения запросов к такой информации??
на чем? продукт, версия

и вообще детальнее по таблицам - какие индексы, связи, типы полей, кол-во записей....
...
Рейтинг: 0 / 0
Оптимизация запроса
    #33802603
Garryх
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошу прощения за безграмотность но с термином PivotTable не знаком - видимо это из MS....
у нас БД Oracle 10g

абсолютные цифры: 240 секунд и 560 секунд - полностью выполнение запроса за один месяц.

текст исполняемого запроса прибл-но следующий:

select df.doc_date,
df.doc_type,
df.agn_id,
df.nomen_id,
f_get_price(df.doc_date,df.nomen_id,'SRT') nprice_srt,
..............................
from t_doc_facts df


f_get_price содержит в себе следующий запрос:

select t.price
into Result
from at_wh_prices t
where t.nomen_rn = nNOMEN_ID
and t.tariff = STARIFF
and t.price_date <= DDATE and (t.end_date >=DDATE or t.end_date is null)

где nNOMEN_ID, STARIFF, DDATE - параметры передаваемые предыдущим селектом
...
Рейтинг: 0 / 0
Оптимизация запроса
    #33802630
Garryх
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
индексы стоят на всех полях таблицы at_wh_prices по которым идет выборка...
...
Рейтинг: 0 / 0
Оптимизация запроса
    #33802682
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой, и сразу стало неинтересно... в смысле с ORACLE (лет 12 не работаю уже)
однако... во-первых Pivot это не MS это общий термин при развертке строк в колонки, я его и имел в виду, т.е. каждая строка содержит все 7 Ваших цен.
но видать здесь не то...
во-вторых, а какой такой большой смысл использовать функцию, не проще ли сделать обычный JOIN или Oracle сложные условия в них не тянет?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #33802702
Goster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... Ну, во-первых, постарайтесь избавиться от функции, т.е. написать единый запрос, без функции. Во-вторых - рассмотрите вариант хранения цен в таблице фактов.
В-третьих, выделяйте пожалуйста, участки кода тегами SRC.
...
Рейтинг: 0 / 0
Оптимизация запроса
    #33802774
Garryх
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок, насчет pivot я кажется понял - в принципе наверное это как раз оно, либо похоже:
т.е. цены хранящиеся в строках (правда все типы цен(тарифы) хранятся в 1 таблице), преобразуются в 1 строку

от ф-ции попробую избавиться-просто изначально так было проще :)

Goster а можно поподробнее о
GosterВо-вторых - рассмотрите вариант хранения цен в таблице фактов.
плз???
...
Рейтинг: 0 / 0
Оптимизация запроса
    #33802934
Goster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garryх Goster а можно поподробнее о
GosterВо-вторых - рассмотрите вариант хранения цен в таблице фактов.
плз???

Ну, храните значение f_get_price(df.doc_date,df.nomen_id,'SRT') в таблице t_doc_facts. :)

Таблица фактов - это по сути - показатели + ссылки на значения таблиц, содержащих члемы измерений. А у вас показатель также является ссылкой. Что, возможно, не совсем правильно. Хотя, на самом деле, все зависит от вариантов использования. Опять же - не понятно, является ли цена в данном случае показателем.
Как вариант - храните там rowid'ы таблицы с ценами.
...
Рейтинг: 0 / 0
Оптимизация запроса
    #33803015
Garryх
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Goster
Ну, храните значение f_get_price(df.doc_date,df.nomen_id,'SRT') в таблице t_doc_facts. :)

Таблица фактов - это по сути - показатели + ссылки на значения таблиц, содержащих члемы измерений. А у вас показатель также является ссылкой. Что, возможно, не совсем правильно. Хотя, на самом деле, все зависит от вариантов использования. Опять же - не понятно, является ли цена в данном случае показателем.
Как вариант - храните там rowid'ы таблицы с ценами.

да, цены у нас в таблице фактов - это показатели,
я вас понял, но тогда получается увеличится время ETL, за счет увеличения времени формирования таблицы фактов?? :)

про rowid'ы что-то я опять не совсем понял :) что это даст? хранить в таблице фактов, как ссылки на цены??
...
Рейтинг: 0 / 0
Оптимизация запроса
    #33803140
Goster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garryхда, цены у нас в таблице фактов - это показатели,
я вас понял, но тогда получается увеличится время ETL, за счет увеличения времени формирования таблицы фактов?? :)
Ну, как обычно - или уменьшаем время загрузки и объем, или уменьшаем время запроса. А вы как хотели? И на елку влезть и зад не ободрать? :)) Может вам здесь кто-нибудь что-то еще подскажет, но я бы на вашем месте обратился с вопросом по производительности запроса в форум по Oracle. Там быстрее помогут.

Garryх
про rowid'ы что-то я опять не совсем понял :) что это даст? хранить в таблице фактов, как ссылки на цены??
Если у вас в таблице цен хранится только одно значение цены - то ничего :)
...
Рейтинг: 0 / 0
Оптимизация запроса
    #33803276
Garryх
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Goster
Ну, как обычно - или уменьшаем время загрузки и объем, или уменьшаем время запроса. А вы как хотели? И на елку влезть и зад не ободрать? :)) Может вам здесь кто-нибудь что-то еще подскажет, но я бы на вашем месте обратился с вопросом по производительности запроса в форум по Oracle. Там быстрее помогут.


Ок, попробую еще туда, но в принципе и здесь мне подсказали немало - на то, что показатели цен не там где нужно наверное действительно имеет смысл обратить внимание
и от функции попробую избавиться :)

Спасибо !!!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Оптимизация запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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