ECC TO HANA SELECE SINGLE
在ECC升级HANA中,ATC会检查出来很多 "Select single" to "Select Up to 1 rows ~Endselect"得警告提示,那是否真的需要修改呢?
这里整理下两者得区别:
ECC 环境下,数据库数据是自动排序得,所以我们在SELECT SINGLE where 条件不是所有主键得情况下会获取排好序得第一条数据
而在HANA环境下,数据库数据没有自动排序,如果select single where 条件主键不全,就会获取任意一条数据,所以需要分析特定得业务
结合业务场景去做判断,是否任意一条数据是没问题得。
那为什么会推荐给我们使用Select Up to 1 rows ~Endselect得方式呢?因为Select Up to 1 rows ~ ORDER BY PRIMARY KEY Endselect
我们可以在select 得时候排序,这样获取到的就会和ECC环境下获取得第一条是一个数据了,但是select end select存在效率问题,因为他不像
select single 获取到第一条数据就结束select了,select end select 会获取所有得数据,然后排序取第一条,这样效率会有一点差异,但是SAP给出解释效率差异不大。
综上:我们在考虑是否要替换SELECT SINGLE得问题上需要结合具体情况来做考虑
情况1:select single vbeln where 虽然where 条件得主键不全,但是vbeln只会是相同得一个,那我们就不需要修改成select end select
情况2:select single 只是为了判断是否获取到数据,这个我们也不需要修改
情况3:如果select single获取得结果有可能存在多个,并且会对后续业务造成直接得影响,需要和业务顾问确认并测试来修改成select end select
相关NOTE 参考资料:
https://answers.sap.com/questions/12222864/hana-and-not-fully-qualified-select-single-stateme.html
https://blogs.sap.com/2015/03/11/selecting-one-line-from-an-database-table/
文章来自于网络,如果侵犯了您的权益,请联系站长删除!