AX 2012R2:查找查询花费的时间太长,查找永远不会打开

AX 2012R2: Lookup query takes too long, lookup never opens

我的 AX2012R2 CU6(build&client 6.2.1000.1437,内核 6.2.1000.5268)存在以下问题:

在 AP>Journals>Invoices>Invoice Journal>lines(形成 LedgerJournalTransVendInvoice),当我 select Vendor as Account type 然后激活 Account 字段,AX 冻结几分钟,当它恢复时,查找 closed/never 打开。每当帐户类型供应商、其他帐户类型工作正常时,都会发生这种情况。

我将其调试到 LedgerJournalEngine.accountNumLookup() --> VendTable.lookupVendor 行

formSegmentedEntryControl.performFormLookup(formRun);

以上过程占用时间

在雇用驱魔人之前有什么想法吗?

可能 SQL 服务器选择了错误的查询计划。

首先检查您没有禁用相关表上的任何索引,然后对它们进行同步。

如果还是有问题,那么对涉及到的表(包括视图中的表)运行一个STATISTICS UPDATE

R3 有一个已知的 KB,请在 Lifecycle services

上查找

KB 3086961 Performance issue of VendorLookup on the volume data, during the GFM Bugbash 6/11 took over 30 minutes

尽管修复是针对 R3 的,但应该很容易向后移植,因为更改被描述为

The root cause seemed to be the DirPartyLookupGridView, which had around 14 joins on views and tables. This view is used in many places and hence seemed to have grown quite a lot over time.

The changes in the hotfix remove the view and add only the required datasources - dirpartytable and logisticsaddress to the VendTableLookup form.

The custtableLookup is not using the view and using custom datasource joins instead, so no changes there.

尝试实施该更改,看看会发生什么。

我不确定这会解决您的问题,因为在您的执行计划中唯一看起来真正昂贵的操作是需要溢出到 tempdb 的排序运算符(您可能需要更多内存来解决它)但是更改在数据源中可能会产生从执行计划中删除排序运算符的效果,因为数据可能按索引排序。