2020-08-20 20:06发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家您好,
我是ABAP CDS视图的新手,想加入4个表。 我读了许多性能优化博客,并且意识到不适合(在性能方面)连接4个表。 但是我想知道我们是否可以在这4个表之间应用关联。 会比参加4张桌子更好吗? 还是应该在一个CDS视图中使用关联? 还是我应该对CDS视图进行分层? 任何帮助将不胜感激。
预先感谢, Rashmi
您好 Rashmi Khemani ,
如果创建了关联并且 在cds视图内使用(意思是:如果您要在cds视图中公开关联的字段之一,如下所示:)
maintablefield1, maintablefield2, association1.field1
,那么它的行为与仅联接相同。
如果不使用cds视图内的关联字段,则将不应用联接。 现在的问题是,为什么我们需要联系呢? 其他用例,例如odata服务将使用它来生成关联和子实体,或BOPF等使用。
如果您认为使用join是合理的,则可以使用它。 如果您的系统运行在hana上,请毫无后顾之忧。 但是,请不要暴露所有会导致性能问题的不必要字段。
BR,
Mahesh
尊敬的Rashmi,
请介意以下最佳实践,以遵循ABAP CDS开发。
https://www.sap。 com/documents/2019/01/0e6d5904-367d-0010-87a3-c30de2ffd8ff.html
嗨,Rashmi,
根据我在CDS视图上的经验,如果您加入4个表,将不会有任何性能问题。在我的项目中,我们在单个CDS视图中使用了20多个表。 由于要引用的基表中有大量数据,因此会出现性能问题。 下面是设计CDS视图时可以遵循的一些实践。
1)始终尝试使用输入参数来限制基本表中的数据(例如:我们有ACDOCA表并且数量巨大,因此请尝试使用输入参数来限制特定年份/季度/期间的数据)
2)每当需要主数据时,请始终尝试使用关联。 在性能方面,它们会提供更好的结果,因为联接条件仅按需执行,即联接仅在输出中请求归档时才运行
3)使用where条件限制数据过滤基表中的数据
4)如果逻辑太复杂,则可以使用多层(例如:您需要创建多个表函数来满足业务需求,并在CDS视图中调用这些表函数)
最多设置5个标签!
您好 Rashmi Khemani ,
如果创建了关联并且 在cds视图内使用(意思是:如果您要在cds视图中公开关联的字段之一,如下所示:)
,那么它的行为与仅联接相同。
如果不使用cds视图内的关联字段,则将不应用联接。 现在的问题是,为什么我们需要联系呢? 其他用例,例如odata服务将使用它来生成关联和子实体,或BOPF等使用。
如果您认为使用join是合理的,则可以使用它。 如果您的系统运行在hana上,请毫无后顾之忧。 但是,请不要暴露所有会导致性能问题的不必要字段。
BR,
Mahesh
尊敬的Rashmi,
请介意以下最佳实践,以遵循ABAP CDS开发。
https://www.sap。 com/documents/2019/01/0e6d5904-367d-0010-87a3-c30de2ffd8ff.html
嗨,Rashmi,
根据我在CDS视图上的经验,如果您加入4个表,将不会有任何性能问题。在我的项目中,我们在单个CDS视图中使用了20多个表。 由于要引用的基表中有大量数据,因此会出现性能问题。 下面是设计CDS视图时可以遵循的一些实践。
1)始终尝试使用输入参数来限制基本表中的数据(例如:我们有ACDOCA表并且数量巨大,因此请尝试使用输入参数来限制特定年份/季度/期间的数据)
2)每当需要主数据时,请始终尝试使用关联。 在性能方面,它们会提供更好的结果,因为联接条件仅按需执行,即联接仅在输出中请求归档时才运行
3)使用where条件限制数据过滤基表中的数据
4)如果逻辑太复杂,则可以使用多层(例如:您需要创建多个表函数来满足业务需求,并在CDS视图中调用这些表函数)
一周热门 更多>