AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.11.2008, 19:10   #1  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,499 / 1096 (39) ++++++++
Регистрация: 22.07.2003
Адрес: МО
В-третьих, использовать sum() и group by.

В-четвертых, перенести генератор из DAX 4.
За это сообщение автора поблагодарили: gl00mie (2).
Старый 06.11.2008, 21:01   #2  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от raz
В-четвертых, перенести генератор из DAX 4.
Что верно, то верно.

Там одно только сокращение выбираемых для каждой записи полей само по себе уже даст ощутимый прирост производительности.

Но в 4.0 был реализован комплекс мер по повышению производительности. Глупо было бы не перенести. Тем более, что там функционал развивают.
__________________
С уважением,
glibs®
Старый 07.11.2008, 09:04   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от glibs Посмотреть сообщение
Там одно только сокращение выбираемых для каждой записи полей само по себе уже даст ощутимый прирост производительности.
Это да.
Но гораздо больший прирост даст отсутствие перехваченного метода postload, а следовательно запрос будет целиком исполняться на SQL-сервере
__________________
полезное на axForum, github, vk, coub.
Старый 07.11.2008, 09:16   #4  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от mazzy
...
запрос будет целиком исполняться на SQL-сервере
...
А что в данном контексте нужно понимать под термином "запрос"?
__________________
С уважением,
glibs®
Старый 07.11.2008, 09:31   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от glibs Посмотреть сообщение
А что в данном контексте нужно понимать под термином "запрос"?
текстовая строка "Select <Бла-бла-бла> from <Бла-бла-бла> ...", которая выполняется НА СЕРВЕРЕ.

поскольку у таблицы LedgerTrans переопределен метод postLoad, то умная Аксапта не посылает SQL-серверу запрос с просьбой посуммировать, а выбирает все записи по одной, применяет к каждой метод postLoad и суммирует сама.

Поэтому для таблиц с перехваченным postLoad гораздо важнее сократить объем выборки, нежели делать агрегирование (raz, к великому сожалению для таблицы LeagerTrans ваш совет не очень помогает. Вот для других таблиц - да, очень полезный совет).


Так вот. Русские отчеты написаны неправильно. Они не учитывают "особенность" таблицы LedgerTrans и суммируют "от начала времен". Что приводит к выборке в Аксапту каждой проводки из LedgerTrans, которая попадает в условие.

Еще раз советую посмотреть как с этим вопросом справились в буржуйских финансовых отчетах. В буржуйских из LedgerTrans никогда не выбирается больше финансового периода - Большинство данных берется из промежуточных итогов. (надо также помнить, что финансовый период безболезненно можно разбить на несколько в случае чего)
__________________
полезное на axForum, github, vk, coub.
Старый 07.11.2008, 09:43   #6  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,499 / 1096 (39) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Цитата:
Сообщение от mazzy Посмотреть сообщение
Поэтому для таблиц с перехваченным postLoad гораздо важнее сократить объем выборки, нежели делать агрегирование (raz, к великому сожалению для таблицы LeagerTrans ваш совет не очень помогает. Вот для других таблиц - да, очень полезный совет).
спорить не буду, но вот такой job:
X++:
static void Job1(Args _args)
{
    ledgertrans     lt;
    ;
    select sum(amountmst) from lt where lt.AccountNum == "zzz";
    print(lt.AmountMST);
    pause;
}
дал такой эффект (количество записей в LedgerTrans 8933031 количество суммируемых записей 438868)
Миниатюры
Нажмите на изображение для увеличения
Название: job.jpg
Просмотров: 397
Размер:	97.2 Кб
ID:	3879  

Последний раз редактировалось raz; 07.11.2008 в 09:48.
Теги
ledgertrans, отчет, производительность, ax3.0, финансовые движения

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Оптимизация кода exodus DAX: Программирование 11 07.11.2007 13:16
Как для ГК операции в LedgerTrans найти соответствующую операцию в VendTrans? romulis DAX: Программирование 20 29.08.2006 14:10
При в таблице LedgerTrans не заполняется поле vasiliy DAX: Программирование 5 08.04.2005 11:43
проблема с настройкой штрихового кода Nic DAX: Функционал 4 27.12.2004 09:04
Оптимизация кода X++ Владимир Максимов DAX: Программирование 8 19.01.2004 15:24

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:32.