У меня есть форма с 4 источниками данных. Он выполнен в стиле списка и имеет Datasource1 (большая таблица с множеством отношений, столбцов и индексов), показанную в сетке. Когда я открываю эту форму, для ее открытия требуется около 200 мс, но когда я обновляю ее, для обновления требуется 13 с.
Я использовал инструмент профилировщика кода и обнаружил, что время потребляется в источнике данных1 в методе executeQuery() с помощью команды super();
Когда executeQuery() вызывается из формы с помощью
Datasource1_ds.executeQuery();
для вызова требуется 200 мс.
В сетке формы около 15 столбцов, и сортировка по одному занимает чуть меньше 1 с.
Итак, мой вопрос. Что вызывается в super();, когда форма обновляется задачей F5 и не вызывается при открытии формы и вызове Datasource1_ds.executeQuery();?
Я пытаюсь использовать профилировщик кода с различными настройками и действиями, отлаживать код в различных действиях, использовать профилировщик Visual Studio, использовать монитор активности на сервере Microsoft SQL в базе данных Microsoft Dynamics AX, изменить таблицу Datasource1, но безуспешно.
Каждый раз, когда я оказываюсь на super(); единственный раз, когда обновление происходит быстро, это когда у меня есть фильтры в сетке, и она показывает меньше строк. (Я пытаюсь использовать свойство VisibleRows в сетке, но это не помогает.)
Я использую Microsoft Dynamics AX 2012 R2.
this.query().literals(true);
послеsuper()
в методеinit
источника данных. - person Jan B. Kjeldsen   schedule 07.04.2015