SAP CRM后台取数据逻辑的性能优化
Pricing currency的bug今天也fix了,356個Opportunity取document Items需要2.8~3秒。
Pricing table和one order table的關聯關系和其他字段稍有不同,中間通過CRMD_LINK的guid_set進行連接,因此不方便寫到一個SQL里,所有我最后的solution 通過兩個獨立的SQL來實現。
單元測試里COMPARE_PRICE方法也做了修改:
拿了10000個order測試,通過:
優化完之后,AG3我的user,取356個Opportunity的documentItems,從以前的44秒縮短到3.8秒。
優化之后的docItem主方法就兩行代碼,
性能提高了10倍的原因是因為我沒有再使用one order的API去取每個field,而是用OPEN SQL直接取表。
測試的時候發現一個bug,CURRENCY這個field在結果集里空的,因為我上面代碼里第23行的join使用的取CURRENCY的foreign key是錯誤的。
之前的單元測試沒有暴露這個issue的原因:
我單元測試的代碼是比較origin和opt兩個structure的CURRENCY field是否相等,如果不等就說明我優化代碼有問題。
我之前單元測試的代碼忘記把通過one order API取回的result寫到origin的structure里,導致比較時origin和opt的CURRENCY field都是空的,因此認為等價,單元測試通過。
AG3上,用我自己的user,只取product node,一共354個Opportunity,總共花費44秒左右。
截圖為證,等優化完來看能快多少秒。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
總結
以上是生活随笔為你收集整理的SAP CRM后台取数据逻辑的性能优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 介绍一个前端页面开发必备神器,chrom
- 下一篇: 山口山战记傻馒获得及培养建议