使用代码检查器检查有问题的SELECT *

2020-08-15 23:09发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我目前正在阅读课程H...

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

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


嗨,

我目前正在阅读课程HA400"针对SAP HANA的ABAP编程",关于使用代码检查器的 SELECT *语句有问题,我有一个不清楚的问题。

在" SAP认证开发专家-SAP HANA的ABAP(2015版)"的考试样本中

链接: https://training.sap.com/shop/certification/e_hanaaw151-sap-certified-development-specialist---abap-for-sap-hana-edition-2015-g/#

我们遇到了以下问题:

1。 您在代码检查器中创建一个检查变体,其中包括"搜索有问题的选择*

声明"。 SAP HANA用作数据库

在检查参数中,您将使用哪个值作为有效使用的字段的百分比?

请选择正确的答案。

a)低于传统的仅基于行存储的数据库

b)与传统的仅基于行存储的数据库具有相同的值

c)您根据表数计算出的值

d)比传统的仅基于行存储的数据库具有更高的价值

实际上,只回答了a)或d)。

我已经提示了答案a)是正确的答案。

但是,我在理解这一点时遇到了问题:

在2015年的HA400课程文档中,它在第75/76页上说:

对有问题的SELECT *语句的检查尤其具有多个检查参数。 此检查搜索SELECT * FROM dbtab语句,其中有效使用了少于指定百分比的字段。 该百分比的默认值为20%。 如果少于20%的字段被使用,则仅选择已使用的字段会更有效 。 如果此参数高度取决于所使用的数据库,则该值。 在具有列存储的数据库中时,例如 SAP HANA,此值应设置为比传统的仅行存储数据库要低的值。

因此,如果将"字段百分比"设置为20%,则必须将SAP HANA的值设置为较低的值,例如 10%(回答'a)')

按照我的观点,这实际上是不正确的,我们需要有一个更高的值(答案" b""),例如 40%或60%。 由于将列出所有有问题的SELECT *语句,其中有1%到40%的未使用字段。

当我们转到2013年的HA400课程文档时,在第57页说,该值应该比传统的行存储数据库中的值高:

对于有问题的SELECT *语句的检查尤其要进行多次检查

参数。 此检查将搜索SELECT * FROM dbtab语句,其中

少于指定百分比的字段被有效使用。 默认值

,该百分比为20%。 如果少于20%的字段被使用

更高效地仅选择使用的字段。

此参数在很大程度上取决于所使用的数据库的值。 在

上 具有列存储的

数据库,例如 SAP HANA,此值应设置为更高

比传统的仅行存储的数据库具有更高的价值。

我很快不太理解短语的上下文。

对于ME,百分比需要从20%增加到40%或更高,因为我们不希望使用HANA运送所有色谱柱。 对于列存储,此操作相当昂贵。 这就是为什么搜索SELECT *需要具有所有条目的字段使用率比例如 40%。

对我来说答案是d)

d)比传统的仅基于行存储的数据库具有更高的价值

2013年HA400课程,第57页


但是SAP说a)

a)低于传统的仅基于行存储的数据库

2015年HA400课程,第76页

我真的不知道为什么他们要改变它。

任何具有一定英语技能的人都可以找到解决此歧义的方法。

感谢您的回复,

凯斯

2条回答
哎,真难
2020-08-16 00:10

a和d可能都是正确的,具体取决于处理方式。

假设我们有名为column_1,column_2 .... to column_100的列。

如果使用的列数是column_1到column_21,并且如果%设置为20,则使用select *时不会引发错误。 这样,通过不抛出错误,我们将调用不需要的其余79列,这会导致HANA数据库中的性能问题。 如果我们将百分比从20降低,这个问题将进一步加剧。

另一方面,可以说我们将百分比增加到30或40。如果仅使用20列,但在选择查询中调用30列,则在这种情况下不会引发任何错误,并且由于这些额外原因而导致性能问题 调用了10列。

假定您从不使用select *作为有经验的开发人员,将%从20降低会带来更多好处,因为从统计上讲,我们很可能对所有选择查询使用少于20%的列,而对于使用21%的列会显示错误消息 即使您忽略纠正它,也不会引起严重的性能问题。

一周热门 更多>