程序的设计思路当然会影响程序的执行速度。程序如何设计与程序员的个人习惯以及业务逻辑有很大的关系。下面我要谈的是如何提高程序中相关代码的执行效率。供参考。
1、杜绝使用 select ….endselect 语句。如果使用时 可以用 select …into cor.. table 替代 ;
2、不要在 循环中 使用 select 语句,尽量使用 read table … BINARY SEARCH 替代;
3、select 中 尽量要求字段最少,避免 select * ;
4、select 中如果有用到 index 时,一定要使用 index
5、在 select 中如果涉及计算,要尽量使用系统提供的关键字,不要再 select ….endselect 中进行;
6、对于连接查询(inner join ),表最好不要多余三个;
6、使用视图查询(FOR ALL ENTRIES IN方式或其它方式)替代嵌套查询;
7、当需要按照表中的数据更新该表中的数据时,不需要使用 select,可以直接更新。 eg: UPDATE SFLIGHT SET SEATSOCC = SEATSOCC - 1.
8、杜绝使用循环中一次一次的做数据库表操作,尽量使用内表一次完成操作; eg : INSERT XXX FROM TABLE XXX.
9、尽量使用 COLLECT;
10、Using a hashed table 在循环中比使用 sort表效率要高;(建议使用)
11、在使用PERFORM时,要TYPE 形式参数
eg : FORM UP2 USING
REPEAT TYPE I
DIMID LIKE T006-DIMID
ZAEHL LIKE T006-ZAEHL.
…
ENDFORM.
12、对于字段符号 尽量不要 TYPE ANY.
13、如果条件多,要使用 CASE
14、 PERFORM I OF FRM1 FRM2 FRM3. (当 I值不同时,调用的 FORM 不同)
15、使用 concatenate 时尽量使用 C类型
16、使用本地的method 要比使用PERFORM 快( call local methods no performance loss) eg: call method C1=>M1. perform F1.
17、Calling methods of global classes is faster than calling function modules eg: call method CL_PERFORMANCE_TEST=>M1. call function ‘FUNCTION1′.
18: 使用 loop 循环内表时,使用字段符号的处理速度比较快
LOOP AT ITAB ASSIGNING .
I = SY-TABIX MOD 2.
IF I = 0.
-FLAG = ‘X’.
ENDIF.
ENDLOOP.
ABAP怎样提高代码执行效率?