uSelect查询需要很长时间

2020-09-18 19:49发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)您好,IdM专家, 我想构建一...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,IdM专家,

我想构建一个可以通过UI任务(报告表单)触发的报告功能。 UI任务启动一个过程(类型:表单操作过程),该过程使用带有SQL查询的脚本从数据库中获取数据。 我正在使用内置的uSelect查询数据库。

SQL查询非常复杂,但是当我在MSSQL Server Management Studio中启动它时,它会在5秒钟内执行。 但是,当该过程执行查询时,需要花费一定的时间才能完成(3000-5000秒)。 我已使用不同的视图重写了查询,但没有帮助。

感谢您的帮助! 问候

佐尔坦

SAP IDM:8.0.4

这是查询的最新版本:

选择li.mcThisMSKEYVALUE作为用户名,en2.sval作为姓氏,en3.sval作为姓氏,en4.sval作为"显示名称",li.mcOtherMSKEYVALUE作为"角色ID",en5.sval作为"角色名称",en .mcMSKEYVALUE作为'管理单位',convert(varchar(20),li.mcValidFrom,20)作为'Valid from',convert(varchar(20),li.mcValidTo,20)作为'Valid to',convert(varchar( 20),mcAddedTime,20)作为``请求日期'',en6.sval作为发起方,REPLACE(REPLACE(REPLACE(li.mcReason,CHAR(13),''),CHAR(10),''),';';' ,':')作为'请求原因',convert(varchar(20),en7.mcDate,20)作为'批准日期',en7.mcResponsibleDisplayName作为批准者,REPLACE(REPLACE(REPLACE(en7.mcReason,CHAR(13) ),''),CHAR(10),''),';',':')作为'批准原因',convert(varchar(20),li.mcModifyTime,20)作为'分配日期',en8。 sval为'Inactive','lb'FROM [mxmc_db]。[dbo]。[idmv_link_ext] li WITH(NOLOCK)左连接[mxmc_db]。[dbo]。[idmv_entry_simple] en on li.mcContextMSKEY = en.mcMSKEY左连接 li.mcThisMSKEY = en2.M上的[mxmc_db]。[dbo]。[idmv_vna] en2 SKEY和en2.AttrName ='MX_FIRSTNAME'左连接[mxmc_db]。[dbo]。[idmv_vna] en3 on li.mcThisMSKEY = en3.MSKEY和en3.AttrName ='MX_LASTNAME'左连接[mxmc_db]。[dbo]。 idmv_vna]上li.mcThisMSKEY = en4.MSKEY和en4.AttrName ='DISPLAYNAME'上的en4加入[mxmc_db]。[dbo]。[idmv_vna] li.mcOtherMSKEY = en5.MSKEY和en5.AttrName ='DISPLAYNAME'上的en5 在li.mcAssigner = en6.MSKEY和en6.AttrName ='DISPLAYNAME'上加入[mxmc_db]。[dbo]。[idmv_vna] en6。在li.mcUniqueID = en7上加入[mxmc_db]。[dbo]。[idmv_historic_approvals] en7。 mcLinkId和en7.mcOperationText ='已批准'左连接[mxmc_db]。[dbo]。[idmv_vna] en8 on li.mcThisMSKEY = en8.MSKEY和en8.AttrName ='MX_DISABLED'其中li.mcAttrName ='MXREF_MX_ROLE'和li。 mcContextMSKEY不为null,并且(li.mcLinkState = 0和li.mcExecState = 1)或(li.mcLinkState = 1和li.mcExecState = 512和li.mcValidFrom> GETDATE()))由li.mcThisMSKEYVALUE,li排序。 mcOtherMSKEYVALUE

6条回答
灬番茄
2020-09-18 20:21

您好,佐尔坦,

在SQL Studio中执行查询时,它仅获取一定数量的行。 当您使用Java执行查询时(uSelect就是这种情况),它查询所有数据并将所有内容读取到分配给相应Java进程的内存中,这就是为什么它花费更长的时间的原因。

我基本上要告诉您的是,您需要降低查询的复杂度或对其进行优化,以便获得更好的运行时间。

也许可以帮助您使用逻辑分组法

选择mskey,
 max(当AttrName ='MSKEYVALUE'然后是Value结束时的情况)mskeyvalue,
 max(当AttrName ='DISPLAYNAME'然后值结束时的情况)DisplayName,
 max(当AttrName ='MX_ENTRYTYPE'然后值结束时的情况)EntryType 
来自idmv_value_basic 
其中attrname位于('MSKEYVALUE','DISPLAYNAME','MX_ENTRYTYPE')
 groupby mskey 

在这里解释:

此处

致谢

诺曼

一周热门 更多>