Axapta 最快的X&x2B+;填充临时表的代码

Axapta 最快的X&x2B+;填充临时表的代码,axapta,temp-tables,x++,Axapta,Temp Tables,X++,我需要在InventTrans上循环,以累积某些日期的itemId数量,并使用该临时表作为数据源,将结果填充到临时表中。我使用了一个类,对于一个itemId,这个过程相当长(大约5-10秒) 哪种代码最快 使用执行该过程的类 临时表上的方法 在调用方窗体上单击按钮()进行处理 如何改进代码?由于您没有显示代码,因此改进代码纯粹是推测性的 我会完全排除第三个;在单击的方法中放置业务逻辑不是一个选项 需要考虑的事项: 客户机/服务器:倾向于将逻辑和数据访问放在服务器端,在table方法或class

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

哪种代码最快

  • 使用执行该过程的类
  • 临时表上的方法
  • 在调用方窗体上单击按钮()进行处理

  • 如何改进代码?

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

    我会完全排除第三个;在单击的方法中放置业务逻辑不是一个选项

    需要考虑的事项:

    • 客户机/服务器:倾向于将逻辑和数据访问放在服务器端,在table方法或class static方法(或使用class属性)上使用
      server
      关键字。避免就参数等问题向客户回电
    • 数据访问:考虑索引使用,在选择中使用字段列表等
    • 事务:在主循环外使用ttsbegin/ttscommit,它甚至可以加快临时表的磁盘访问速度
    • TempDB表:在AX 2012中考虑使用TEMPDB表填充<代码>插入式记录集< /C> > /LI>
    • 尽可能避免使用临时表:在您的情况下,
      InventSum
      表可能为您准备好了数据。使用select中的
      sum
      关键字,并结合
      InventDim
      表中的join。考虑一下要做些艰苦的工作。这将使SQL server进行计算,这通常会导致性能提高两位数
    长时间的询问?在用户设置中启用长查询的SQL日志记录


    花在什么上的时间?使用代码分析器。

    请显示您的代码。问题可能出在代码中,而不是流程中。我做过类似的事情,结果要好得多,但如果我不知道你在做什么,我就无能为力。“在你的情况下,InventSum表可能已经为你提供了数据。”这是一个奇妙的观察。