我有一个包含4个数据源的表单。它是listpage样式,并且在网格中显示Datasource1(具有大量关系,列和索引的大表)。当我打开这个表单时,打开它需要200ms,但是当我刷新它需要13秒才能刷新。
我使用了代码分析器工具,我发现 executeQuery()方法中的数据源1消耗的时间是命令 super();
从
的表单中调用 executeQuery()时Datasource1_ds.executeQuery();
调用它需要200ms。
表格中有15列格式,按1排序只需不到1秒。
所以我的问题是。当表单被任务F5刷新而没有被openning表调用并调用 Datasource1_ds.executeQuery(); ?
时,在 super(); 中调用什么我尝试使用具有不同设置和操作的代码分析器,在各种操作中调试代码,使用Visual Studio Profiler,在Microsoft Dynamics AX数据库的Microsoft SQL服务器中使用Activity Monitor,更改Datasource1表,没有运气。
每次我最终都在 super(); 只有在刷新速度快的时候,我才会在网格上显示过滤器并显示更少的行。 (我尝试在网格上使用VisibleRows属性,但它没有帮助。)
我正在使用Microsoft Dynamics AX 2012 R2
答案 0 :(得分:2)
我建议使用在打开ListPage表单时在初始executeQuery()
上执行(1)的SQL Server Profiler查询,然后(2)在表单刷新时调用executeQuery()
。
这两个查询的执行计划比较必须显示瓶颈。您可以捕获 Showplan XML 事件。