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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.10.2020, 13:35   #1  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Форма ЖБД. Акс2012. Быстродействие
В жбд у нас записей в десятках миллионах. Общая форма (не та что по конкретной записи, а та что в администрировании) открывается очень долго, поиск по ней соответственно тоже(.
Как я понимаю проблема в том, что на DS SysDatabaseLog свойство CrossCompanyAutoQuery = true. Оно дает к селекту на гриде WHERE (PARTITION=?) ORDER BY T1.TABLE_,T1.LOGRECID,T1.CREATEDDATETIME OPTION(FAST 20).
Т.е. сортировка по порядку для которого индекса нет.
При вызове ЖБД на конкретной записи поиск тоже далеко не оптимальный WHERE ((PARTITION=?) AND ((TABLE_=?) AND (LOGRECID=?))). А индекс то на начинается с PARTITION, DATAAREAID

Вопрос. Что можно сделать минимальными затратами, но не меняя функциональность формы. Может с индексами можно сделать чтото?
Старый 01.10.2020, 17:33   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Порядок полей в Where не влияет.
Смотрите на сортировки.

Самый простой вариант - подпилить форму чтобы при открытии из меню (когда element.args().record() пустой) ставился фильтр "0" на поле LOGRECID.
Тогда открываться будет быстро. А вы потом все равно свой фильтр поставите.
Старый 02.10.2020, 06:59   #3  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от Logger Посмотреть сообщение
Порядок полей в Where не влияет.
Смотрите на сортировки.
Я понимаю, что у Where влияет не порядок а наличие. Влияет порядок в индексе.
Цитата:
Сообщение от Logger Посмотреть сообщение
Самый простой вариант - подпилить форму чтобы при открытии из меню (когда element.args().record() пустой) ставился фильтр "0" на поле LOGRECID.
Тогда открываться будет быстро. А вы потом все равно свой фильтр поставите.
Да попробовал, открывается достаточно быстро. Хоть там и скан индекса, но с одним значением справляется пока. А вот фильтровать, типа найти удаленные по конкретной таблице, уже грустнее..
Тоже не идеальное решение.
Старый 02.10.2020, 07:17   #4  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
В итоге поменял настройки кластерного индекса. DataAreaId добавил вручную в другом порядке:
Название: SysDatabaseLog.PNG
Просмотров: 329

Размер: 20.4 Кб

Форма жбд заработала без задержек.
Пришлось подождать синхронизацию.. но прошла.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Зависает форма при выполнении executeQuery Vasiliusis DAX: Программирование 3 28.01.2016 11:42
Как класс->запрос->форма. Как такое создать? kitty DAX: Программирование 16 09.09.2014 12:52
лукап-форма с доп. фильтром patron DAX: Программирование 10 30.03.2007 12:19
Как передать параметры из одной web форма в другую dtsymbal DAX: Программирование 9 28.02.2006 10:31
Произвольная Lookup форма Maxim Gorbunov DAX: База знаний и проекты 0 30.11.2001 21:59

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

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

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