为什么刷新后执行查询要多花 100 倍的时间?
Why executeQuery after refresh takes 100x more time?
我有一个包含 4 个数据源的表单。它采用列表页样式,并在网格中显示 Datasource1(具有大量关系、列和索引的大 table)。当我打开此表单时,打开它需要 200 毫秒,但当我刷新它时,它需要 13 秒才能刷新。
我使用了代码分析器工具,我发现在executeQuery()方法中Datasource1中的时间被命令super();
当 executeQuery() 被
从表单调用时
Datasource1_ds.executeQuery();
调用需要200ms。
表单的网格中有大约 15 列,按一列排序需要不到 1 秒。
所以我的问题是。当任务 F5 刷新表单而不是打开表单并调用 Datasource1_ds.executeQuery();[=36 时在 super(); 中调用的内容=]?
我尝试使用具有不同设置和操作的代码探查器,在完成的各种操作中调试代码,使用 Visual Studio 探查器,使用 Activity Microsoft 中的监视器 SQL Microsoft 上的服务器Dynamics AX 数据库,更改 Datasource1 table,没有成功。
每次我最终进入 super(); 只有当我在网格上有过滤器并且它显示的行数较少时,刷新速度才会快。 (我尝试在网格上使用 VisibleRows 属性 但它没有帮助。)
我正在使用 Microsoft Dynamics AX 2012 R2
我建议使用 SQL Server Profiler 捕获执行的查询 (1) 在初始 executeQuery()
打开 ListPage 表单时,然后 (2) 在调用 executeQuery()
在表单刷新。
比较这两个查询的执行计划一定能看出瓶颈。您可以捕获 Showplan XML 事件。
我有一个包含 4 个数据源的表单。它采用列表页样式,并在网格中显示 Datasource1(具有大量关系、列和索引的大 table)。当我打开此表单时,打开它需要 200 毫秒,但当我刷新它时,它需要 13 秒才能刷新。
我使用了代码分析器工具,我发现在executeQuery()方法中Datasource1中的时间被命令super();
当 executeQuery() 被
从表单调用时Datasource1_ds.executeQuery();
调用需要200ms。
表单的网格中有大约 15 列,按一列排序需要不到 1 秒。
所以我的问题是。当任务 F5 刷新表单而不是打开表单并调用 Datasource1_ds.executeQuery();[=36 时在 super(); 中调用的内容=]?
我尝试使用具有不同设置和操作的代码探查器,在完成的各种操作中调试代码,使用 Visual Studio 探查器,使用 Activity Microsoft 中的监视器 SQL Microsoft 上的服务器Dynamics AX 数据库,更改 Datasource1 table,没有成功。
每次我最终进入 super(); 只有当我在网格上有过滤器并且它显示的行数较少时,刷新速度才会快。 (我尝试在网格上使用 VisibleRows 属性 但它没有帮助。)
我正在使用 Microsoft Dynamics AX 2012 R2
我建议使用 SQL Server Profiler 捕获执行的查询 (1) 在初始 executeQuery()
打开 ListPage 表单时,然后 (2) 在调用 executeQuery()
在表单刷新。
比较这两个查询的执行计划一定能看出瓶颈。您可以捕获 Showplan XML 事件。