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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.06.2007, 12:33   #21  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
если скопировать запрос как есть из мониторинга и выполнить его через Management Studio - также долго?
Старый 25.06.2007, 12:43   #22  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от 3oppo Посмотреть сообщение
А вы в этом смысле. Ну да есть некоторые неудобства. Но почти всё обходится дополнительным программированием.
Я об этом и говорю Почему join запрос разбивается на подзапросы!?

Цитата:
Сообщение от 3oppo Посмотреть сообщение
Если это даже все 30 сек. (думаю что ЗНАЧИТЕЛЬНО меньше) это не критично для отчёта запускаемого 2 раза в месяц.
Я же вам написал "Замерьте"
А вы отвечаете "думаю, что..."
Повторяю еще раз: ЗАМЕРЬТЕ.
__________________
полезное на axForum, github, vk, coub.
Старый 25.06.2007, 13:17   #23  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Цитата:
Сообщение от belugin Посмотреть сообщение
если скопировать запрос как есть из мониторинга и выполнить его через Management Studio - также долго?
В Enterprise Managere выполнился за 3 сек.
Что такое Management Studio ?!
Старый 25.06.2007, 13:44   #25  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Что мне реально может дать этот софт?! Показания Enterprise Managere не достаточно?!
Включил этот же код в качестве прямого запроса отработал за 15 сек

Последний раз редактировалось 3oppo; 25.06.2007 в 13:55.
Старый 25.06.2007, 13:50   #26  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Ничего не даст - это просто ответ на Ваш вопрос "Что такое Management Studio ?!".

Просто в SQL 2005 -- это штатная штука того же назначения что и EM в 2000.

Честно говоря, не знаю, что дальше делать. Может попробовать потрассировать ход выполнения запроса при помощи profiler. Или попробовать выполнить запрос при помощи connection (может быть что-то роется в настройках соединения)
Старый 25.06.2007, 13:51   #27  
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
Цитата:
Сообщение от 3oppo Посмотреть сообщение
Пробовал коментарить код внутри цикла, на времени выполнения это не отразилось.
А на количестве запросов?

Включите мониторинг длинных запросов. Посмотрите, действительно ли этот злополучный запрос так долго отрабатывает именно в Аксапте.

Запустите профайлер кода, в конце концов. Убедитесь, что время уходит именно на запрос.
__________________
С уважением,
glibs®
Старый 25.06.2007, 14:15   #28  
Ed1k is offline
Ed1k
Участник
 
102 / 42 (2) +++
Регистрация: 19.07.2006
Цитата:
Сообщение от 3oppo Посмотреть сообщение
Остался вопрос ПОЧЕМУ ТАК ДОЛГО?! И почему такая большая разница с прямым запросом.
Разница в планах выполнения может быть, хинты запроса одинаковые?
Старый 25.06.2007, 14:30   #29  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Цитата:
Сообщение от glibs Посмотреть сообщение
А на количестве запросов?
На количестве запросов отразилось, я же написал запрос всё таки один. (Там хитро запускался простой select) Но выполняется очень медленно. С простым инкрементом вместо кода.


Цитата:
Сообщение от glibs Посмотреть сообщение
Запустите профайлер кода, в конце концов. Убедитесь, что время уходит именно на запрос.
Запускал время уходит на весь цикл.

Что есть время выполнения запроса?! Это время до выхода из полного цикла, или это время до попадания внутрь цикла?

Обратил внимание на такую вещь:
При АКСАПТАВСКОМ запросе, попадание внутрь цикла происходит быстро ( 5 сек), НО само прохождение по циклу идёт очень медленно, хотя внутри выполняется только i++;
При прямом запросе, и попадение внутрь цикла и сам цикл (с кодом i++) делаются очень быстро.
Может это как то, кому то, прояснит ситуацию!?
Старый 25.06.2007, 14:42   #30  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
А что это за "прямой запрос"?
Приведите его.

PS. Есть подозрение, что это происходит из-за сортировки. Уберите index из запроса.
__________________
Axapta v.3.0 sp5 kr2
Старый 25.06.2007, 14:44   #31  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,731 / 406 (17) +++++++
Регистрация: 23.03.2006
пробуйте указать в запросе используемые поля, т.к. может быть все дело в объеме перекачиваемых данных
ПС попадание внутрь цикла и есть исполнение запроса
Старый 25.06.2007, 14:45   #32  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
И еще - замените первый join на exists join - у вас на каждую проводку для одной и той же номенклатуры возвращается сторока. За счет этого может быть много "холостых" прогонов цикла
__________________
Axapta v.3.0 sp5 kr2
Старый 25.06.2007, 14:53   #33  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Цитата:
Сообщение от Ed1k Посмотреть сообщение
Разница в планах выполнения может быть, хинты запроса одинаковые?
Как это?!

Цитата:
Сообщение от AndyD Посмотреть сообщение
А что это за "прямой запрос"?
Приведите его.
X++:
    odbc = new ODBCConnection(lp);
    statement = odbc.createStatement();
    ip4 =   NoYes::Yes;
    ip2 =   RAssetTransType::Acquisition;
    ip3 =   VGP_LedgerLinkModuleRef::RAsset;
    select it;
    queryText   =
    strfmt(
      "SELECT * FROM  RASSETTABLE"

    + "FROM         vgp_sql.RASSETTABLE A INNER JOIN"
    + "                  vgp_sql.RASSETTRANS B ON A.ACCOUNTNUM = B.ACCOUNTNUM INNER JOIN"
    + "                  dbo.LEDGERTRANS C ON B.VGP_LEDGERLINKID = C.VGP_LEDGERLINKID AND B.VOUCHER = C.VOUCHER AND"
    + "                  B.TRANSDATE = C.TRANSDATE"
    + " WHERE     (A.DATAAREAID = 'vgp') AND (A.VGP_PROPERTYTAX = %4) AND (B.DATAAREAID = 'vgp') AND (B.ASSETTRANSTYPE = %2) AND"
    + "                  (B.TRANSDATE <= CONVERT(DATETIME, %1, 102)) AND (C.DATAAREAID = 'vgp') AND (C.VGP_LEDGERLINKMODULEREF = %3)"
    + " ORDER BY A.DATAAREAID, A.ACCOUNTNUM, B.DATAAREAID, B.ACCOUNTNUM, B.ASSETTRANSTYPE, C.DATAAREAID, C.VGP_LEDGERLINKID,"
    + "                  C.VGP_LEDGERLINKMODULEREF OPTION (FAST 4)"
    , date2str( reportDateEnd,321,2,4,2,4,4), ip2, ip3, ip4, CurExt()   );


    odbc.ttsbegin();
    res = statement.executeQuery(queryText);
    while(res.next())
    {
          i++;
    }
Цитата:
Сообщение от AndyD Посмотреть сообщение
PS. Есть подозрение, что это происходит из-за сортировки. Уберите index из запроса.
ПРОБОВАЛ! Не помогает!

Последний раз редактировалось 3oppo; 25.06.2007 в 15:03.
Старый 25.06.2007, 14:59   #34  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Цитата:
Сообщение от ice Посмотреть сообщение
пробуйте указать в запросе используемые поля, т.к. может быть все дело в объеме перекачиваемых данных
ПС попадание внутрь цикла и есть исполнение запроса
Почему тогда этого не происходит при прямом запросе?! Хотя надо попробовать!

Цитата:
Сообщение от AndyD Посмотреть сообщение
И еще - замените первый join на exists join - у вас на каждую проводку для одной и той же номенклатуры возвращается сторока. За счет этого может быть много "холостых" прогонов цикла
Да я это видел, как момент оптимизации. Думаю и firstonly там ставили именоо для этого!

PS. Наберут студентов по объявлению... .. .
Старый 25.06.2007, 15:15   #35  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Цитата:
Сообщение от ice Посмотреть сообщение
пробуйте указать в запросе используемые поля, т.к. может быть все дело в объеме перекачиваемых данных
ПС попадание внутрь цикла и есть исполнение запроса
Запросил одно поле, запрос отработал за 7 секунд!
Но мне нужны все поля!!!
Старый 25.06.2007, 15:20   #36  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
а если в прямом запросе прокачать все поля через ODBC, останется ли он после этого быстрее встроенного?
Старый 25.06.2007, 15:27   #37  
ALES is offline
ALES
Участник
Злыдни
 
220 / 45 (2) +++
Регистрация: 11.08.2004
Цитата:
Сообщение от 3oppo Посмотреть сообщение
Запросил одно поле, запрос отработал за 7 секунд!
Но мне нужны все поля!!!
Точно все все ?? Там мемо полей, например, с фотографией ОС случаем в выборке нет? )
Старый 25.06.2007, 15:52   #38  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от 3oppo Посмотреть сообщение
X++:
    odbc = new ODBCConnection(lp);
    statement = odbc.createStatement();
    ip4 =   NoYes::Yes;
    ip2 =   RAssetTransType::Acquisition;
    ip3 =   VGP_LedgerLinkModuleRef::RAsset;
    select it;
    queryText   =
    strfmt(
      "SELECT * FROM  RASSETTABLE"

    + "FROM         vgp_sql.RASSETTABLE A INNER JOIN"
    + "                  vgp_sql.RASSETTRANS B ON A.ACCOUNTNUM = B.ACCOUNTNUM INNER JOIN"
    + "                  dbo.LEDGERTRANS C ON B.VGP_LEDGERLINKID = C.VGP_LEDGERLINKID AND B.VOUCHER = C.VOUCHER AND"
    + "                  B.TRANSDATE = C.TRANSDATE"
    + " WHERE     (A.DATAAREAID = 'vgp') AND (A.VGP_PROPERTYTAX = %4) AND (B.DATAAREAID = 'vgp') AND (B.ASSETTRANSTYPE = %2) AND"
    + "                  (B.TRANSDATE <= CONVERT(DATETIME, %1, 102)) AND (C.DATAAREAID = 'vgp') AND (C.VGP_LEDGERLINKMODULEREF = %3)"
    + " ORDER BY A.DATAAREAID, A.ACCOUNTNUM, B.DATAAREAID, B.ACCOUNTNUM, B.ASSETTRANSTYPE, C.DATAAREAID, C.VGP_LEDGERLINKID,"
    + "                  C.VGP_LEDGERLINKMODULEREF OPTION (FAST 4)"
    , date2str( reportDateEnd,321,2,4,2,4,4), ip2, ip3, ip4, CurExt()   );


    odbc.ttsbegin();
    res = statement.executeQuery(queryText);
    while(res.next())
    {
          i++;
    }
Что вы людям голову морочите?
У этого запроса даже синтаксис неправильный.
__________________
полезное на axForum, github, vk, coub.
Старый 25.06.2007, 17:26   #39  
MPAKObec is offline
MPAKObec
Участник
 
4 / 11 (1) +
Регистрация: 06.06.2007
Цитата:
Сообщение от belugin Посмотреть сообщение
а если в прямом запросе прокачать все поля через ODBC, останется ли он после этого быстрее встроенного?
А как это делается?!
Старый 25.06.2007, 17:31   #40  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
после res.next пройтись по всем полям в res.metadata и вызвать для каждого res.getString.

Ещенарушена чистота жксперимента использован ODBCConnection вместо Connection
Теги
производительность, запрос (query), ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Не отрабатывает запрос EXISTS JOIN Paul_ST DAX: База знаний и проекты 8 21.03.2008 17:21
запрос с 4 таблицами. Загадка с Join Андрей К. DAX: Программирование 7 19.09.2007 17:12
Почему на форме "Пользовательские настройки", когда я перехожу в нее из формы, отсутствует закладка "Запрос"? Hans DAX: Администрирование 0 05.07.2007 13:52
2 join-а + CasheLookup = EntireTable vallys DAX: Программирование 1 10.03.2006 13:20
можно ли сделать с помощью join следующий запрос: SergAY DAX: Программирование 1 29.07.2003 11:39

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

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

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