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

Tho*_*ost 2 temp-tables x++ axapta

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

哪个代码最快?

  1. 使用执行该过程的类
  2. 临时表上的方法
  3. 在调用者表单上单击按钮()的过程

我该如何改进我的代码?

Jan*_*sen 6

由于您没有展示您的代码,因此改进它将纯粹是推测性的.

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

需要考虑的事项:

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

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

花在的时间是多少?使用代码分析器.