报表性能优化.ppt

报表性能优化.ppt

ID:57309120

大小:171.01 KB

页数:12页

时间:2020-08-11

报表性能优化.ppt_第1页
报表性能优化.ppt_第2页
报表性能优化.ppt_第3页
报表性能优化.ppt_第4页
报表性能优化.ppt_第5页
资源描述:

《报表性能优化.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ABAP:SAP报表的性能优化1、  关于表连接语句(INNERJOIN,LEFTJOIN...)写报表的时候,表与表之间的关联是不可避免的。通常而言,表连接语句要掌握的原则有:(1) 将最有效的查询条件所对应的表放在第一位。换言之,让查询第一个表后所得到的结果集就尽可能小。比如有一张报表叫做订单状态统计表,可能查完VBAK、VBAPLIPS、VTTP等,界面上的查询条件很多。不过据了解得知,该报表主要是查看昨天创建或前几天创建的订单。那么最有效的限制条件自然是订单创建日期,以及销售组织了,而表连接的主表宜选用VBAK。(2) 确定了表连接的次序后,应考虑将查询条件尽量限制在靠前

2、的表里。比如选择屏幕上有个物料号的查询条件,而我们知道订单VBAPLIPS均有物料号,那就应该视情况而定,如果表连接中VBAP更早出现,那么WHERE子句中就使用vbap~matnrINs_matnr,反之就是lips~matnrINs_matnr。(3) 两个表之间进行连接的时候,应考虑关键字段或索引字段的作用。比如查询VTTP和LIPS时,关联关系是vttp~vbeln=lips~vbeln。那么vttp在前,lips在后,就会比较快,因为根据vttp的vbelnlipsvbeln是lips的关键字段,速度较快。而反过来如果lips在前,那根据lips~vbelnvttp会慢

3、一些,除非vbeln是vttp的索引字段。2,  先构建RANGE再执行SQL语句有时我们所能用的查询条件不是很理想,比如查询LIKP却必须用公司代码,而非销售组织。此时普通做法是用LIKP与TVKO根据VKORG进行表联接,从而限制TVKO~BUKRS的值。还有一种有效的办法是,通过TVKO查询到当期公司代码所对应的全部销售组织,从而组建一个RANGE出来,再根据此RANGE查询LIKP。当然要注意RANGE的行项目有上限的,在ECC6中大概2万行将导致ABAPDUMP。提示:DATAr_vkorg TYPE RANGE OFlikp-vkorg.SIGN=‘I’,OPTION

4、=‘EQ’,LOW=‘XXXX’ 即可往r_vkorg中放入多个单值。3,  ForAllEntries与SelectSingle的比较就个人而言,笔者不是很喜欢ForAllEntries语句,因为它的缺点多于优点。很多人都会说,为什么呀,ForAllEntries不是比SelectSingle快么?事实到底怎样呢,让我们做个比较。假设我们有个内表代表销售订单的行项目,该内表有10万行。此时我们要根据LIPS的VGBEL和VGPOS,查询这些订单行项目对应的交货单行项目。ENDLOOP.对于SELECTSINGLE而言,由于LIPS有个VGB的SAP自带索引,每次查询都挺快,即便

5、循环10万次,速度虽然快不了但也没什么大的危害。对于ForAllEntries的第一步,的确比SELECTSINGLE快些,本来10万次的SELECTSINGLE,变成了1万次的查询(如果BASIS设置了参数为10),每次查询10个订单行项目。但是第二步就很慢了, 暂估it_lips为8万行,则对于it_vbap的10万个行项目,有8万个行项目执行READTABLE语句平均需要4万次才能搜索到it_lips的目标行,另有2万个行项目将读遍it_lips然后才发现没有对应的目标行。所以我们一共需要搜索48亿次,太慢了!在此针对ForAllEntries的使用提出几点意见:(1)如果

6、是根据某数据量大的内表用ForAllEntries读取数据量小的配置表,比如TVAK/T006等,那不如把ForAllEntries直接去掉,把表里的几十条数据全部取出。(2)使用ForAllEntries时,SELECT语句后面的字段必须包含所查表关键字段。比如上面的vbeln/posnr就是lips的关键字段。如果不含关键字段,比如SELECTlfimgFROMlipsForAllEntries***,那么当LIPS中两个条目关键字段不同而lfimg相同时,会被SAP自动过滤掉一条。(3)上面关于性能问题,应该利用BINARYSEARCH、SORTEDTABLE或者HASHE

7、DTABLE来解决。详见下面第四节。4,  关于BINARYSEARCH/SORTEDTABLE/HASHEDTABLE的使用BINARYSEARCH即二分法查找,在保证内表按查询字段以升序排列的时候,可以采用二分法查找。二分法查找的速度很快,最大查询次数为log2n。以上面的例子来说,如果it_lips事先按vgbel和vgpos排好序,则每次查找最多不超过17次。则对于it_vbap的10万个行项目,仅100多万次就可以搞定了!当使用READTABLE语法时,如果查询字段跟S

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。