填充临时表的最快X ++代码

时间:2012-10-01 09:00:05

标签: axapta temp-tables x++

我需要在InventTrans上循环以累积某些日期的itemId数量,并使用此临时表作为数据源填充表格中的结果的临时表。我使用了一个类,对于一个itemId,这个过程很长(约5-10秒)。

哪个代码最快?

  1. 使用执行该过程的类
  2. 临时表上的方法
  3. 在调用者表单上单击按钮()的过程
  4. 如何改进我的代码?

1 个答案:

答案 0 :(得分:6)

由于你没有展示你的代码,改进它将纯属推测。

我完全排除第3;将业务逻辑放在点击方法中不是一种选择。

需要考虑的事项:

  • 客户端/服务器:首选将逻辑和数据访问放在服务器端,在表方法或类静态方法(或使用类属性)上使用server关键字。避免回调客户参数等。
  • 数据访问:考虑索引使用情况,在选择中使用字段列表等。
  • 事务:在主循环外使用ttsbegin / ttscommit,它甚至可以加速临时表的磁盘访问。
  • TempDB表:在AX 2012中,请考虑使用填充了insert_recordset
  • 的TempDB表
  • 如果可能,请避免使用临时表:在您的情况下,InventSum表可能已准备好数据。在select sum表中使用InventDim关键字,并结合使用{{1}}表。考虑做一个观点来做艰苦的工作。这将使SQL服务器进行计算,这通常会导致性能提高两位数。

长查询?在用户设置中启用长查询的SQL日志记录。

花费的时间是多少?使用代码分析器。