程序优化需要注意的东西---慢慢累积
2014-01-24 17:02
274 查看
1.使用WHERE条件减少循环次数;
推荐:
SELECTION-OPTIONS: s_vbeln FOR vbak-vbeln. LOOP AT itab WHERE vbeln IN s_vbeln. …… ENDLOOP.
不推荐:
SELECTION-OPTIONS: s_vbeln FOR vbak-vbeln. LOOP AT itab. IF itab-vbeln IN s_vbeln. …… ENDIF. ENDLOOP.
2.尽量避免使用MOVE-CORRESPONDING 和 INTO CORRESPONDING FIELDS OF;
CORRESPONDING语句在系统内部存在隐式操作:
这条以前还真没注意到,不过不用-CORRESPONDING的话,得特别小心字段的匹配,不然不报错就是数据对不上了。
3.使用SORTED TABLE 和 HASHED TABLE表类型;
4.使用 BINARY SEARCH 二分查找算法;
这个也有注意事项;
必须根据查询条件进行排序,而且必须是升序,也就是系统默认的排序、
5.使用较高效的 DELETE ADJACENT DUPLICATES FROM 删除内表邻近重复记录;
就是说你用select的时候不要排除重复项,当然你也得注意排序,保留的规则是第一条数据;
6.使用较高效的COLLECT语句对记录进行聚集加总;
注意: COLLECT语句的效率只体现在当你使用的是顺序表和哈希表的时候,或者内表经过有效排序之后。否则当内表数据过多时,检索时间会很长,一般不推荐使用在记录条数非常多的标准表。
7.嵌套loop语句,可以用先read在loopat from。
这个我得重点说下了,相信很多人看不太明白,认真看下下面这段代码
LOOP AT LT_VDGROUP INTO LS_VDGROUP02 WHERE VGROUP = LS_VDGROUP01-VGROUP. READ TABLE IT_REL ASSIGNING <L_FS_REL> WITH KEY LIFNR = LS_VDGROUP02-LIFNR BINARY SEARCH. IF SY-SUBRC = 0. LOOP AT IT_REL ASSIGNING <L_FS_REL> FROM SY-TABIX. IF <L_FS_REL>-LIFNR <> LS_VDGROUP02-LIFNR. EXIT. ENDIF. READ TABLE IT_REL2 ASSIGNING <L_FS_REL2> WITH KEY EBELN = <L_FS_REL>-EBELN BINARY SEARCH. IF SY-SUBRC <> 0 . ADD <L_FS_REL>-BRTWR TO <G_FS_VENDOR>-UNDEL. ENDIF. ENDLOOP. ENDIF. ENDLOOP.
怎样降低数据库负载
说白了就是减少I/O操作
1.避免使用SELECT
… ENDSELECT语句;
2.避免使用SELECT *;
3.使用FOR ALL ENTRIES IN
语句联接数据表和内表;
这个值得推敲
4.使用索引提高查询效率;
5.避免使用SQL
的ORDER BY
语句, SORT语句会更高效;
6.使用SQL聚合函数MAX,
MIN, COUNT, AVG, SUM。
程序内存使用的优化-1
§使用OCCURS n 与 OCCURS 0 的区别。
OCCURS n 代表初始化内表的空间大小为n(空间固定), 当内表存储记录条数超出n时, 系统将依靠页面文件存放超出部分的数据。 当系统内存资源十分紧缺的时候, 我们可以使用OCCURS n的初始化方法,但是这样的效率稍微慢。
OCCURS 0 代表初始化内表的空间大小为无限,当内表存储记录条数不断增加时, 内表所使用的内存空间不断扩大, 直到系统无法分配为止。 使用内存比使用页面交换更快一些,但是要考虑系统的资源状态。
程序内存使用的优化-2
§使用SELECT … PACKAGE SIZE n 分段查询数据,减低数据库缓存负担.
SELECT …… INTOTABLE itab PACKAGE SIZE 100 FROM VABK ……
该语句实现没次打开DB会话时, 往应用服务器上传输100条记录, 然后关闭会话,刷新缓存。 用于在数据库缓存资源紧缺的情况使用。
§使用完成后及时清空释放内表
RefreshITAB;
Free ITAB.
相关文章推荐
- 做程序需要注意的东西
- 使用NOSQL的MongoDB时建立索引需要注意的几点建议和Explain优化分析
- c#程序调用c++编写dll需要注意问题
- 网站优化需要注意哪些细节问题?
- PHP开发程序应该注意的42个优化准则
- paip.提升用户体验---网站程序HTML,JS需要注意的地方
- mysql查询优化需要注意的20点?
- 我在程序中这么做f1==f2,可是明明相等但是程序中却按不相等的去做了。难道浮点数比较还有什么需要注意的问题吗?
- 微信小程序你需要知道的东西
- Android应用程序优化都有哪些需要注意的?
- 数据库需要注意的东西 --不断收藏
- 浅谈php优化需要注意的地方
- SEO网站优化需要注意哪些细节问题
- 用编译原理编写计算器程序中需要注意的问题
- 使用Angularjs需要注意的一些东西
- 下载文件使用缓存(一次性读取到内存),优化性能(注意静态对象修改需要加锁)
- PHP开发程序应该注意的42个优化准则
- MongoDB优化与一些需要注意的细节
- windows server 2008 r2被我禁止掉的30个左右的服务,根据个人需要,合理优化,注意备份。
- js函数写法一个需要注意的问题(如果不需要做js压缩优化则可以不用注意)