FOR ALL ENTRIES IN内表排序、排重对性能的影响
大家都知道for all entries in 关联内表时,要先判断内表不为空 否则会扫描全表,非常消耗服务器内存资源,那么内表关键字段的排序和排重对查询效率有没有影响呢?下面看一个例子
程序代码:
- DATA: it_mara TYPE STANDARD TABLE OF mara,
- wa_mara TYPE mara,
- it_makt TYPE STANDARD TABLE OF makt,
- wa_makt TYPE makt,
- it_temp_mara TYPE STANDARD TABLE OF mara,
- wa_temp_mara TYPE mara.
- * Get all the records from MARA
- SELECT *
- UP TO 100 ROWS
- FROM mara
- INTO TABLE it_temp_mara.
- IF sy-subrc = 0.
- IF NOT it_temp_mara[] IS INITIAL.
- * 具有重复数据的内表
- DO 1000 TIMES.
- APPEND LINES OF it_temp_mara TO it_mara.
- ENDDO.
- IF NOT it_mara[] IS INITIAL.
- * Select MAKT
- WRITE:/'内表中数据未经排序排重'.
- PERFORM select_makt.
- * 排过序的内表
- WRITE:/'内表中数据已排序未排重'.
- SORT it_mara BY matnr.
- PERFORM select_makt.
- * 删除了重复数据的内表
- WRITE:/'内表中数据已排序并排重'.
- DELETE ADJACENT DUPLICATES FROM it_mara COMPARING matnr.
- PERFORM select_makt.
- ENDIF.
- ENDIF.
- ENDIF.
- *&---------------------------------------------------------------------*
- *& Form select_makt
- *&---------------------------------------------------------------------*
- * Select data friom MAKT
- *----------------------------------------------------------------------*
- FORM select_makt .
- DATA: t1 TYPE i,
- t2 TYPE i,
- tmin TYPE i.
- REFRESH it_makt[].
- GET RUN TIME FIELD t1.
- SELECT *
- FROM makt
- INTO TABLE it_makt
- FOR ALL ENTRIES IN it_mara
- WHERE matnr = it_mara-matnr.
- GET RUN TIME FIELD t2.
- tmin = t2 - t1.
- tmin = tmin .
- WRITE:/ ' Time(ms) = ', tmin.
- ENDFORM. "select_makt
复制代码
由上边的执行时间分析,可以得出以下结论:
内表排序和排重都能提高[FOR ALL ENTRIES]查询的效率
1、使用FOR ALL ENTRIES IN时内表中不要有重复的数据
2、对内表进行排序
特别注意第二点,容易被忽略
注意:这里的时间给错了,是us,不是ms毫秒
FOR ALL ENTRIES IN内表排序、排重对性能的影响相关推荐
- 汇总内表数据:at end of方法和collect方法
ABAP开发中经常会遇到需要汇总内表中数据的情况,下面介绍两种方法:at end of和collect. 1.at end of方法 在使用loop循环读取已排序的内表时,可以访问两个自动生成的 ...
- ABAP~ 内表操作
内表是每个ABAP开发人员都必须懂的,数据从R3取出来后,就是放在内表里处理的,其实就是Java中的集合框架,只是没有那么多不同数据结构的内表,目前只有标准.排序.Hash三种,这还是新的语法,老的只 ...
- abap内表的操作汇总
abap内表是abap开发中最常用的工具之一 这里总结一个常用的一些操作,以后可以直接复制使用 1,定义 参考字段定义 DATA:BEGIN OF i_list OCCURS 0 , matnr ...
- FOR ALL ENTRIES IN 与 INNER JOIN 内表
1.区别 FOR ALL ENTRIES IN 与 INNER JOIN 内表,目的都是通过内表找数据库表与之对应的数据,但是有区别. 1.1.写法 FOR ALL ENTRIES IN " ...
- Excel按照单元格内设定好的次序进行工作表排序
如下图所示,Excel如何按照单元格内设定好的次序进行工作表排序呢,接下来请看小编的操作吧 (方方格子插件) 1.先看动图演示吧 2.那我们可以选择方方格子按钮的操作 3.注意这里要选择的是工作表操作 ...
- 【04】SAP ABAP性能优化 - 如何选用内表类型(STANDARD, SORTED, HASHED)?
ABAP提供了三种类型的内表, 即:标准表(Standard Table), 排序表(Sorted Table), 哈希表(Hashed Table).在未声明内表类型时,系统会将类型默认为标准表. ...
- 比较有意思的比较内表的小函数
包 :CT 函数组:CTVB 函数模块:CTVB_COMPARE_TABLES CALL FUNCTION 'CTVB_COMPARE_TABLES' EXPORTING table_ol ...
- ABAP几种内表的操作
ABAP几种内表的操作 这次的程序用到了哈希表,在这里,也顺便总结一下ABAP三种内表的特点. ABAP中有三类内表,标准表,排序表和哈希表. 三种内表介绍 标准表的每一行对应一个逻辑索引-SY-TA ...
- SAP ABAP ALV构建动态输出列与构建动态内表
首先,简单说明一下要用到的表类型.类.函数: 表类型 LVC_T_FCAT-(存放自定义列属性的表类型,一般用到的属性有:FIELDNAME.OUTPUTLEN.DATATYPE.INTTYPE.IN ...
最新文章
- oracle schedule stop,Oracle调度Schedule特性(第八部分)-Windows和Window Groups
- 正则表达式基础(一)
- DBSNMP和SYSMAN用户初始密码及正确的修改方式
- python官网下载安装教程-Python和Anoconda和Pycharm安装教程
- 插入顶部_声屏障顶部斜插式安装可获得10-25dB的降噪量
- rabbitmq安装与配置(windows)亲测有效!!!
- Nginx+Tomcat+Memcached实现tomcat集群和session共享
- windows 2008 终端服务器配置,windows 2008终端服务器设置
- 中国最富包租婆!每年坐地收租200亿,身家相当于十个老干妈
- vue 组件模板template定义时的注意事项
- python就业方向-目前Python这么火,Python有哪些就业方向?
- 没事学学docker:解决dockerfile出现的Error: Failed to download metadata for repo ‘appstream‘: Cannot prepar
- CentOS 7搭建tengine+php+mariadb环境并安装discuz论坛
- 前端的长度单位有哪些
- IOI 2011 Tropical Gardens Race Ricehub
- 基于HTML、CSS、JavaScript、jQuery的app小项目--简易备忘录
- Java学习笔记-IO
- 淘淘商城第39讲——使用Spring来管理单机版Redis与集群版Redis
- 地理坐标系_GCS汇总
- 解析程序化中的机器人的算法写作