AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen Alle Foren als gelesen markieren

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 31.03.2011, 16:46   #1  
egorych ist offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Registriert seit: 09.11.2006
Ort: Краснодарский край
Отмена сортировки по умолчанию на форме
Собственно - есть больша-а-а-я таблица - архив sysdatabaselog. Для нее делаю отдельную форму - практически копия стандартной sysdatabaselog.
Проблема в чем - система автоматом подставляет в запрос к БД сортировку по индексу.
Есс-но это очень долго, да и не нужно! Хочется избавиться от этого - пробую
X++:
public void executeQuery()
{
    this.query().dataSourceTable(tablenum(SysDatabaseLog_Arh)).sortClear();
    super();
}
Не помогает ! - на сервер все равно уходит -
PHP-Code:
ORDER BY SUBSTR(NLS_LOWER(A.DATAAREAID),1,3),A.TABLE_,A.LOGRECID,A.CREATEDDATE,A.CREATEDTIME 
Как избавиться от сортировки?
Alt 31.03.2011, 17:50   #2  
DSPIC ist offline
DSPIC
Боец
 
1.077 / 1243 (44) ++++++++
Registriert seit: 11.04.2008
Поставьте у св-ва датасорса AutoQuery = No и сами подсуньте нужную кверю в init() датасорса
или
Ваш код перенесите из executeQuery() в init() поле Super();
или
если уж в executeQuery(), то используйте
this.queryRun().query()...
или
Пропишите в св-ве датасора другой сортировочный индекс, по которому сортироваться будет быстрее. Кстати, если есть индекс - почему медленно сортируется, не совсем понятно...

В общем как-то так...
Alt 31.03.2011, 21:04   #3  
Logger ist offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3.996 / 3293 (117) ++++++++++
Registriert seit: 12.10.2004
Ort: Москва
Blog-Einträge: 2
Если я правильно понимаю, то предполагается что пользователь сам установит нужный фильтр, т.е. показывать форму без фильтра не надо. Может быть поэтому при открытии этой формы сразу вызывать FormdataSource.QueryRun().prompt() или что-нить в этом духе, чтобы пользователь смог проставить нужный фильтр сильно, сужающий выборку.
Alt 31.03.2011, 21:21   #4  
DSPIC ist offline
DSPIC
Боец
 
1.077 / 1243 (44) ++++++++
Registriert seit: 11.04.2008
Мне кажется, речь о медленном открытии формы, и как возможную причину рассматривают ненужную сортировку, накладывающуюся автоматически
Alt 31.03.2011, 22:44   #5  
sukhanchik ist offline
sukhanchik
Administrator
Benutzerbild von sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.343 / 3563 (125) ++++++++++
Registriert seit: 13.06.2004
Ort: Москва
Сортировка, уходящая на сервер при открытии формы - накладывается не просто так. А для ускорения открытия формы. А именно такая сортировка берется из-за того, что на таблице указан кластерный индекс TableRecIdIdx, который и содержит все эти поля. Кластерный индекс в свою очередь сортирует данные в файле согласно полям, входящим в него. Очевидно, что выбирая с сортировкой по кластерному индексу - выборка будет быстрее (если Вам сказать, что книги в библиотеке лежат согласно сортировке по названию книги = выдать запрос с сортировкой - то Вам легче будет отыскать нужную книгу).

В связи с этим - вопрос к автору топика. С чего Вы решили, что эта сортировка замедляет выборку?

Есть другое предположение, с чем связаны тормоза. Табличка не индексирована. Т.е. индекс как бы есть, но фактически его нет. Пересоздайте этот индекс или сделайте реиндексацию таблички. Должно все залетать
__________________
Возможно сделать все. Вопрос времени
Alt 31.03.2011, 23:32   #6  
DSPIC ist offline
DSPIC
Боец
 
1.077 / 1243 (44) ++++++++
Registriert seit: 11.04.2008
А какая версия AX, 9-ка? Странная сортировка по SUBSTR... Наверное, sukhanchik прав, а ещё обязательно попробуйте это, если AX2009а
This post has been rated by: sukhanchik (2).
Alt 01.04.2011, 00:40   #7  
glibs ist offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4.942 / 911 (40) +++++++
Registriert seit: 10.06.2002
Ort: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Судя по "...A.CREATEDDATE,A.CREATEDTIME..." версия ниже 5.0.

Согласен с DSPIC
Zitat:
Zitat von egorych
... сортировку по индексу. Есс-но это очень долго
Не вижу тут ничего естественного. Сортировка по индексу должна работать быстро.

"OPTION(FAST 1)" у вас на сервер уходит?

Хм. В 4.0 наблюдаю странную вещь. Там на форме 2 источника данных. Оба по таблице SysDataBaseLog. Связи нет. Фильтр на запрос накладывается в методах источника данных.

В результате уходят два запроса.

"
SELECT A.USERNAME,A.DESCRIPTION,A.LOGTYPE,A.TABLE_,A.LOGRECID,A.CREATEDDATE,A.CREATEDTIME,A.CREATEDBY,A.CREATEDTRANSACTIONID,A.RECVERSION,A.RECID,A.DATA
FROM SYSDATABASELOG A WITH( NOLOCK)
WHERE ((DATAAREAID=?)
AND ((TABLE_=?)
AND (LOGRECID=?)))
ORDER BY A.DATAAREAID,A.TABLE_,A.LOGRECID,A.CREATEDDATE,A.CREATEDTIME OPTION(FAST 1)
"
Выборка по компании, таблице и коду записи. Запрос может венуть много записей по модификации конкретной записи в таблице, но, в общем случае скажем так, умеренно.

"
SELECT A.USERNAME,A.DESCRIPTION,A.LOGTYPE,A.TABLE_,A.LOGRECID,A.CREATEDDATE,A.CREATEDTIME,A.CREATEDBY,A.CREATEDTRANSACTIONID,A.RECVERSION,A.RECID,A.DATA
FROM SYSDATABASELOG A WITH( NOLOCK)
WHERE (DATAAREAID=?)
ORDER BY A.DATAAREAID,A.TABLE_,A.LOGRECID,A.CREATEDDATE,A.CREATEDTIME OPTION(FAST 1)
"
А вот этим запросом выбираются все данные из таблицы журнала в рамках конкретной компании. Если данных в таблице много (чего можно ожидать), то выборка будет отрабатывать долго и вполне может объяснять торможение формы.

Осталось понять как они этого добились.
__________________
С уважением,
glibs®
Alt 01.04.2011, 00:59   #8  
glibs ist offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4.942 / 911 (40) +++++++
Registriert seit: 10.06.2002
Ort: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Попробуйте открывать форму для конкретной записи через паспорт записи.

Вообще с "OPTION(FAST 1)" открытие формы тормозить не должно сильно.

Смотрите план запроса. разумеется после реиндексации и обновления статистик. Что именно тормозит? И который из двух запросов?
__________________
С уважением,
glibs®
Alt 01.04.2011, 01:03   #9  
glibs ist offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4.942 / 911 (40) +++++++
Registriert seit: 10.06.2002
Ort: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
В общем, не там проблему ищете, потому и не находите.
__________________
С уважением,
glibs®
Alt 01.04.2011, 05:07   #10  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Может все проще?
Zitat:
Zitat von egorych Beitrag anzeigen
Собственно - есть больша-а-а-я таблица - архив sysdatabaselog. Для нее делаю отдельную форму - практически копия стандартной sysdatabaselog.
...
Как избавиться от сортировки?
у вас свойство Index у датасорса установлено?
если да, то в соответствии со свойством и сортирует.
Просто уберите.
Miniaturansicht angehängter Grafiken
Klicken Sie auf die Grafik für eine größere Ansicht

Name:	1.PNG
Hits:	406
Größe:	41,9 KB
ID:	6716  
__________________
полезное на axForum, github, vk, coub.
Alt 01.04.2011, 08:42   #11  
AndyD ist offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2.560 / 2494 (89) +++++++++
Registriert seit: 20.08.2005
Zitat:
Zitat von DSPIC Beitrag anzeigen
Странная сортировка по SUBSTR...
Ничего странного - б/д Oracle
__________________
Axapta v.3.0 sp5 kr2
This post has been rated by: DSPIC (1).
Alt 01.04.2011, 09:47   #12  
egorych ist offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Registriert seit: 09.11.2006
Ort: Краснодарский край
Ой, сколько откликов за ночь! Отвечаю по порядку.
Аксапта 3 KR2 на Oracle 10g.
Да, речь идет об медленном открытии формы. Табличка партицированная (~250млн. записей), видимо поэтому order by очень сильно тормозит!
Для 1 записи (или нескольких - история) открывается мгновенно.
Пробовал вставлять sortclear и в init и в execute - результат однинаков т.е. никакого! Попробую еще с подменой query.
Св-во index на датасорсе не заполнено
Статистика и индекс перестроены, пересчитаны и залочены - табличка архивная, заполняется 1 раз в год.
Почему думаю, что тормозит order by? Я собственно не думаю, а знаю - пробовал в разных видах этот запрос делать во внешних тулзах - как только убираешь сортировку - все работает быстро!
Alt 01.04.2011, 09:58   #13  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von egorych Beitrag anzeigen
Аксапта 3 KR2 на Oracle 10g.
Ух ты, какая древность.
А свойство primary index на самой таблице?

(cluster index пусть остается)

===============
добавлено: у меня только ax3.0 SP6. ни в исходном слое, ни в SP6 в свойствах не установлен Primary Index. А вот в SP2 - не помню.
Angehängte Grafiken
 
__________________
полезное на axForum, github, vk, coub.
Alt 01.04.2011, 10:16   #14  
egorych ist offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Registriert seit: 09.11.2006
Ort: Краснодарский край
Zitat:
Zitat von mazzy Beitrag anzeigen
Ух ты, какая древность.
А свойство primary index на самой таблице?
(cluster index пусть остается)
И primary и cluster - все поля пустые!
В том и вопрос, что все известные мне способы отмены сортировки почему-то не работают!
__________________
Axapta 3.0 sp - хз какой, kr2
Alt 01.04.2011, 10:18   #15  
AndyD ist offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2.560 / 2494 (89) +++++++++
Registriert seit: 20.08.2005
Zitat:
Zitat von mazzy Beitrag anzeigen
Ух ты, какая древность.
А свойство primary index на самой таблице?

(cluster index пусть остается)

===============
добавлено: у меня только ax3.0 SP6. ни в исходном слое, ни в SP6 в свойствах не установлен Primary Index. А вот в SP2 - не помню.
Индекс TableRecIdIdx - не является уникальным. Соотвественно, не может быть и первичным

Да и зачем нужен, в данном случае, Primary Key?


У меня другой вопрос.
Каким образом хранятся в кластерном индексе рассчитанные значения для функционального ключа? И как упорядочиваются записи по нему?
__________________
Axapta v.3.0 sp5 kr2
Alt 01.04.2011, 10:29   #16  
AndyD ist offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2.560 / 2494 (89) +++++++++
Registriert seit: 20.08.2005
Zitat:
Zitat von egorych Beitrag anzeigen
И primary и cluster - все поля пустые!
В том и вопрос, что все известные мне способы отмены сортировки почему-то не работают!
Интересно.
У меня в конфиге из подписи кластерный индекс есть

А если таблицу просматривать в Обозревателе из Аксапты - тоже тормозит, или открывает быстро?
__________________
Axapta v.3.0 sp5 kr2
Alt 01.04.2011, 10:59   #17  
egorych ist offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Registriert seit: 09.11.2006
Ort: Краснодарский край
Zitat:
Zitat von AndyD Beitrag anzeigen
Индекс TableRecIdIdx - не является уникальным. Соотвественно, не может быть и первичным
Да, это так, но т.к. индекс на таблице 1, то система добавила к нему RecID автоматом и получился уникальный индекс.
Zitat:
Zitat von AndyD Beitrag anzeigen
У меня другой вопрос.
Каким образом хранятся в кластерном индексе рассчитанные значения для функционального ключа? И как упорядочиваются записи по нему?
Не совсем понял вопрос? Косяпта, как известно, в случае Оракла использует т.н. FBI и, соответственно в запросах также использует обертку для строковых полей из NLS_LOWER и SUBSTR, поэтому индексы используются нормально. Это то очем спрашивали?

Zitat:
Zitat von AndyD Beitrag anzeigen
А если таблицу просматривать в Обозревателе из Аксапты - тоже тормозит, или открывает быстро?
Тоже тормозит - на сервере запрос получается все равно с order by !
__________________
Axapta 3.0 sp - хз какой, kr2
Alt 01.04.2011, 11:12   #18  
tricky ist offline
tricky
Участник
 
140 / 64 (3) ++++
Registriert seit: 03.05.2005
Ort: Гуково
может быть это поможет
This post has been rated by: egorych (5).
Alt 01.04.2011, 11:13   #19  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von AndyD Beitrag anzeigen
Да и зачем нужен, в данном случае, Primary Key?
Спрашиваю, потому что автор не сказал ни о версии, ни модификациях.
теперь мы можем быть уверены, что индексов в свойствах нет ни на форме, ни в таблице.

но ведь барабашки - нет!

значит, остаются какие-то непонятнки с ядром ax3.0 SP2.
Насколько я помню, SP2 глючный какой-то был. Мы старались обновлять клиентов до SP3, а потом хотя бы до Kernel Rollup 2. В KR2 много чего поправлено в ядре было.

egorych, у вас точно exe-шники от ax3.0 SP2?
или вы exe-шники таки обновляли?
что показывается в окне Помощь \ О программе?

можете скриншот привести?
щас мы вашу версию определим http://forum.mazzy.ru/index.php?showtopic=881

заодно, вы пробовали обновлять exe-шники до SP5? можете попробовать на тестовой базе и сообщить о результатах? может это багофича ядра какая-нибудь.
__________________
полезное на axForum, github, vk, coub.
Alt 01.04.2011, 11:35   #20  
AndyD ist offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2.560 / 2494 (89) +++++++++
Registriert seit: 20.08.2005
Zitat:
Zitat von mazzy Beitrag anzeigen
значит, остаются какие-то непонятнки с ядром ax3.0 SP2.
Насколько я помню, SP2 глючный какой-то был. Мы старались обновлять клиентов до SP3, а потом хотя бы до Kernel Rollup 2. В KR2 много чего поправлено в ядре было.

egorych, у вас точно exe-шники от ax3.0 SP2?
или вы exe-шники таки обновляли?
что показывается в окне Помощь \ О программе?
У него в подписи
Axapta 3.0 sp - хз какой, kr2
Что-то сомневаюсь, что там sp2
__________________
Axapta v.3.0 sp5 kr2
This post has been rated by: mazzy (2).
Stichworte
order by, query, сортировка

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Итератор с поддержкой методов обратного вызова для обработки контролов на форме gl00mie DAX: Программирование 18 06.08.2013 22:16
Отображение таблицы в новой форме форме DAsm DAX: Программирование 23 04.03.2011 21:50
Как правильно связать таблицы в форме? Как показать параметры партии? mazzy DAX: Программирование 10 27.10.2010 15:56
Несинхронность размерности полей в форме поиска... glibs DAX: Функционал 0 05.04.2010 21:54
Использование семейства InventDimCtrl_Frm_* - 2 DS InventDim на одной форме Pavlo AKA Panok DAX: База знаний и проекты 5 22.12.2008 17:15
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 19:37 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.