24.11.2015, 17:06 | #1 |
Участник
|
AX 2012 R2 CU7 Исправление медленно закрывающейся формы сопосталений проводок по клиенту/поставщику, открытой из журнала ГК
При помощи Tracing утилиты обнаружил в методе CustVendPaymNote.buildPaymNote() очень медленно выполняющийся запрос:
X++: while select crossCompany RecId from specTrans order by specTrans.RecId where specTrans.SpecCompany == _specCompany && specTrans.SpecTableId == _specTableId && specTrans.SpecRecId == _specRecId join RecId from custVendTransOpen where custVendTransOpen.DataAreaId == specTrans.RefCompany && custVendTransOpen.TableId == specTrans.RefTableId && custVendTransOpen.RecId == specTrans.RefRecId join TransDate, DocumentNum, Invoice, PaymId, Voucher from custVendTrans where custVendTrans.RecId == custVendTransOpen.RefRecId Выполнил его рефакторинг: X++: while select crossCompany TransDate, DocumentNum, Invoice, PaymId, Voucher from custVendTrans join RecId from custVendTransOpen where custVendTransOpen.RefRecId == custVendTrans.RecId join RecId from specTrans where specTrans.RefCompany == custVendTransOpen.DataAreaId && specTrans.RefTableId == custVendTransOpen.TableId && specTrans.RefRecId == custVendTransOpen.RecId && specTrans.SpecCompany == _specCompany && specTrans.SpecTableId == _specTableId && specTrans.SpecRecId == _specRecId И создал на таблице SpecTrans индекс: X++: #SpecTransIdx PROPERTIES Name #SpecTransIdx ENDPROPERTIES INDEXFIELDS #SpecRecId #SpecTableId #SpecCompany #Partition #RecId #INCLUDEDCOLUMNPRESENT #RefRecId #INCLUDEDCOLUMNPRESENT #RefTableId #INCLUDEDCOLUMNPRESENT #RefCompany #INCLUDEDCOLUMNPRESENT ENDINDEXFIELDS До рефакторинга запрос выполнялся 12 сек, после - меньше 1 сек. Пролем в работе бизнес-логики пока не обнаружил. |
|
|
За это сообщение автора поблагодарили: Logger (3), plumbum (2). |
Теги |
ax2012r2, performance, slow, тормоза |
|
|