2015-12-16 33 views
2

我有一個AX2012R2 CU6(建&客戶6.2.1000.1437,內核6.2.1000.5268)具有以下問題:AX 2012R2:查找查詢的時間太長,查找從未打開

在AP>期刊>發票>發票Journal> lines(form LedgerJournalTransVendInvoice),當我選擇Vendor爲賬戶類型然後在賬戶字段中激活查找,AX凍結了幾分鐘,當它恢復時,查找被關閉/從不打開。每當帳戶類型供應商,其他帳戶類型正常工作時都會發生這種情況。

我調試這LedgerJournalEngine.accountNumLookup() - > VendTable.lookupVendor線

formSegmentedEntryControl.performFormLookup(formRun);

上述過程佔用的時間。

我僱用驅魔人之前有什麼想法?

+0

它正在執行什麼查詢?追蹤並調整它。 –

+0

它的基本AX: SELECT FIRSTFAST AccountNum,黨 \t FROM VendTable(VendTable)ORDER BY VendTable.AccountNum ASC \t聯接名稱,市,定位器,州,郵編,CountryRegionId,NameAlias \t FROM DirPartyLookupGridView(DirPartyLookupGridView) \t ON VendTable.Party = DirPartyLookupGridView.Party \t AND((((DirPartyLookupGridView.AddressValidFrom <= 2015-12-15T14:29:27)&& \t(DirPartyLookupGridView.AddressValidTo> = 2015-12-15T14:29:27)) )) –

+0

此外:我運行從SQL Server,前1000行的視圖DIRPARTYLOOKUPGRIDVIEW。花了三分鐘。 在非R2環境中,五秒鐘。 –

回答

6

有一個已知KB此爲R3,該GFM Bugbash 6/11在尋找它Lifecycle services

KB 3086961 VendorLookup的性能問題上的音量數據, 花了30分鐘

即使修復爲R3它應易於反向移植作爲變化被描述爲

根本原因似乎編輯爲DirPartyLookupGridView,其中有大約14個連接視圖和表的 。這個觀點在許多地方使用,因此似乎隨着時間的推移而增長很多。

修補程序中的更改刪除視圖並僅將所需的 數據源 - dirpartytable和logisticsaddress添加到 VendTableLookup表單。

custtableLookup不使用視圖,而是使用自定義數據源 來代替,因此在那裏沒有更改。

嘗試執行該更改並查看會發生什麼。

我不確定這會解決您的問題,因爲在您的執行計劃中,看起來非常昂貴的唯一操作是需要泄漏到tempdb的排序運算符(您可能需要更多內存來解決此問題)數據源可能會從執行計劃中刪除排序運算符,因爲數據可能會被索引排序。

+0

這似乎是它。你知道我怎樣才能得到關於變化的信息,所以我可以手動做出來並嘗試一下嗎? –

+1

我在答案中添加了一個鏈接。你可以在那裏搜索,並有一個「查看更改」按鈕。 –

+0

唉,「觀點變化」沒用。我創建了一個LCS事件來獲取XPO中的更改。我們會看到,但這真的很可能是答案:) –

2

可能是SQL Server選擇了錯誤的查詢計劃。

首先檢查您是否禁用了涉及表上的任何索引,然後對它們進行同步。

如果仍然存在問題,則在涉及的表(包括視圖中的表)上運行STATISTICS UPDATE

+0

做了一個包含所有受影響的表和視圖的項目,發現沒有禁用索引,已同步。沒有效果。 SQL Server維護計劃重建所有索引並每晚更新所有統計信息。 我很難過。 –

+0

使用您在SQL Server查詢窗口中提供的SQL,然後顯示執行計劃等。我想您使用SQL跟蹤器或此答案來獲取它:http://stackoverflow.com/a/33927010/4509 –

+0

SQL腳本,執行計劃和它的XML都在Gdrive中:https://drive.google.com/open?id=0B5Qfc-HE9_U1ZnBfRmhMZmRLWWs –