注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

XINBO'S SAP BLOG

你所浪费的今天,是昨天死去的人奢望的明天。你所厌恶的现在,是未来的你回不去的曾经

 
 
 

日志

 
 

ABAP 性能优化  

2009-05-18 12:56:23|  分类: ABAP优化 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
近来做的程序数据都有几十万,上百万条记录。性能问题是一个难题,如何优化?
前一段时间ACCENTURE 的老师讲了一天关于优化的问题受益不小。
       从近来开发的程序来看优化主要有以下几个方面。1.数据库查询 2.数据处理。
  1.数据库查询:
      当查询的最终数据比较少,而表内的数据比较多的时候,应该想办法把最能缩小范围的条件
放在前面查询。这样在后面的查询记录会少很多
     对尽更能用关键字查询,有时可能用一个关键字和几个关键字查询的快慢会不一样,有一个同
事在查询一个有一百多万的数据是。用了几个关键字反而非常慢。减少了关键字还会快一些。可以
用ST05 里面的"一个SQL要求的说明"这个功能去测试用什么条件会更好。
SELECT
  T_00 . "TPLNR" , T_00 . "TPLMA" , T_02 . "ANLAGE"
FROM
  "IFLOT" T_00 INNER JOIN "EVBS" T_01 ON T_01 . "MANDT" = :A0 AND T_01 . "HAUS"
  = T_00 . "TPLNR" INNER JOIN "EANL" T_02 ON T_02 . "MANDT" = :A1 AND T_02 . "VS
  TELLE" = T_01 . "VSTELLE"
WHERE
  T_00 . "MANDT" = :A2 AND T_02 . "ANLAGE" IN ( :A3 , :A4 , :A5 , :A6 , :A7 )
 
可以试 A2 A3 A4。。。。看看那样更快
2.数据处理
      LOOP 中不要用SELECT  和 NEXT LOOP  。
     若必须NEXT LOOP  最好能把要LOOP  的内表数据减到最小。如
LOOP A1
   LOOP A2 WHERE X1 = A1-X AND X2 <> ''.
   ENDLOOP
ENDLOOP.
   这样可以把A2 的减小。如
  DATA LI_A2 LIKE A2.
      LI_A2 = A2.
DELETE LI_Z2 WHERE X2 = ''.  这样就减小了一部分数据。
 
  在SE30 里的小提示与技巧中用到一个办法。如下:但前提是两个LOOP的内表都要按同一个字段进行排序,下面用的是K 这个字段。
* Entries: 100 (ITAB1), 1000 (ITAB2)
* Line width: 100
* Both tables sorted by key K
I = 1.
LOOP AT ITAB1 INTO WA1.
  LOOP AT ITAB2 INTO WA2 FROM I.
    IF WA2-K <> WA1-K.
      I = SY-TABIX.
      EXIT.
    ENDIF.
    " ...
  ENDLOOP.
ENDLOOP.
 
READ TABLE 当只查询一条记录用read table 不用要LOOP,而且用 BINARY SEARCH  。注意用 BINARY SEARCH 的时候一定要先按照
read table 后面的条件进行排序,不然得到就是错误的数据。 
read table a1 with key x1 = 11 x2 = 33 BINARY SEARCH  .
在上面这一句话着一定要做排序 sort a1 by x1 x2.
 
常用性能优化工具如SE30 ST05 ST12 等也测试。找到问题点去修改。
  评论这张
 
阅读(597)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017