点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我仍在学习构建可靠的CDS视图。 在开发过程中,我比较参数与WHERE语句时对CDS视图的性能感到好奇。
我已经构建了CDS视图:
@ AbapCatalog.sqlViewName:'XXX' @ AbapCatalog.compiler.compareFilter:是 @ AccessControl.authorizationCheck:#NOT_REQUIRED @ EndUserText.label:'模块数据' @ClientDependent:是 定义视图XXX 使用参数p_idate:abap.dats, p_lang:abap.lang, p_objid:abap.numc(8) -主要对象 选择与hrp1000不同的对象 -模块学分 左外部加入hrp1741作为module_credits 在object.plvar = module_credits.plvar 和object.otjid = module_credits.otjid -模块容量 左外部加入hrp1024作为容量 在object.plvar = Capacity.plvar 和object.otjid = Capacity.otjid -模块数据 左外部连接hrp1746作为module_data 在object.plvar = module_data.plvar 和object.otjid = module_data.otjid { 键object.objid作为ID, object.mc_short作为ShortName, object.stext作为名称, object.begda作为BeginDate, object.endda作为EndDate, module_credits.cpmin作为MinCredits, module_credits.cpmax作为MaxCredits, module_credits.cpopt作为OptimumCredits, Capacity.kapz1为MinCapacity, Capacity.kapz2为OptimumCapacity, Capacity.kapz3作为MaxCapacity, module_data.severity为AcademicLevel, module_data.category作为类别, module_data.modrepeattype作为RepetitionType, module_data.waitl_level作为WaitingListLevel, module_data.waitl_number作为WaitlistInPercent, module_data.waitl_disabled为WaitListIsDisabled, module_data.mult_sec_enabled为MltplSctnIsEnabled, } 其中object.plvar ='01' 和object.otype ='SM' 和object.objid = $ parameters.p_objid 和object.begda <= $ parameters.p_idate 和object.endda> = $ parameters.p_idate 和object.langu = $ parameters.p_lang 和module_credits.begda <= $ parameters.p_idate 和module_credits.endda> = $ parameters.p_idate 和Capacity.begda <= $ parameters.p_idate 和Capacity.endda> = $ parameters.p_idate 和module_data.begda <= $ parameters.p_idate 和module_data.endda> = $ parameters.p_idate
此视图的性能很好。 但是我不想使用Objectid(OBJID)作为参数。 我只希望能够选择每个特定选择中需要的所有对象。
使用OBJID作为参数时的性能:〜120.000微秒。
在WHERE子句中使用OBJID时的性能:〜800.000微秒。
为什么在WHERE子句中使用OBJID而不是OBJID作为参数时,性能却慢得多?
对不起,我很困惑。
是什么意思" OBJID作为参数"与" WHERE子句中的OBJID"?
您是否谈论开放SQL语句访问视图,一次是将对象id作为参数传递,一次是在其WHERE子句中传递?
如果是,请在ABAP调试器或ST05中使用SQL跟踪,以查看由DBI生成的不同SQL语句。 那应该给你一个提示,为什么表现会有所不同。
一周热门 更多>