"选择单个"与"选择最多1个行"

2020-08-18 21:25发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我花了最后2个小时...

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

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


大家好,

我花了最后2个小时比较并研究了上述陈述,但没有明确的结果。

是否有任何官方文档,其中哪个语句应更快地处理SELECT,而由于仅访问非(唯一)索引字段,我希望该语句仅返回一条记录?

这是否还取决于所使用的DBMS(ORACLE 10.2.0.4.0)和/或SAP版本(NW 7.01 SP6)?

从性能专家那里获得一些反馈非常好!

在此先感谢和问候,

Alej

17条回答
2020-08-18 22:01

我相信SELECT .. UP TO 1 ROWS在理论上具有更长的运行时间,尽管我非常确定它是不可测量的。 原因如下:如果调试该语句,您将看到它执行SELECT,然后转到ENDSELECT并返回到SELECT。 因此,解释器似乎只运行一次循环,而SELECT SINGLE只是一个语句。 (好吧,这无疑是一些挥霍的争论……)

在Oracle上,实际的数据库语句(本机SQL)相同:都使用提示FIRST_ROWS(1)并通过ROWNUM <= 1限制结果集。

齐格弗里德·波伊斯写道:

当我拥有完整的主键时,我使用SELECT SINGLE。

当我没有完整的主键时,我最多使用1行。

原因是代码的可读性而不是性能!

有趣并与他人保持一致,尽管总的来说,我不同意这一说法。 对我来说,SELECT SINGLE的惯用用法是只要您有条件确保只能返回一条记录。 一个唯一的索引(不仅仅是主键)就足够了,并且可能会争用应用程序/功能级别已知的唯一性来扩展它(公认的是更脆弱且不受控制)。

但是,就实际使用而言,我认为如果使用SELECT SINGLE时没有主键,则Extended Program Check会吐出警告(目前没有用于检查此内容的系统,如果这样,可能是 是否有这样做的强烈理由?!)。 我认为这是在没有完整主键的情况下采用SELECT ..最多1行的原因。

我一直不喜欢SELECT-ENDSELECT构造的部分是调试(提交)时可能出现短转储的可能性。 据我所知,这也适用于最多1行的限制,但不适用于SELECT SINGLE。

干杯,哈拉德

一周热门 更多>