添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

1、文档介绍

本文档将介绍内表的区别和用法,涉及标准表、排序表、哈希表

2、用法与区别

2.1、内表种类

内表顶层为任意表,任意表分为索引表和哈希表,索引表又可分为标准表和排序表,结构如图:

ABAP 辨析 标准表|排序表|哈希表_字段

2.2、内表用法

2.2.1、标准表

说明: 标准表的每一行会有一个逻辑索引,查找数据时,可以通过关键字或索引进行查找;添加数据时,可通过索引添加到具体位置,也可以默认添加到最后

对表进行插入、删除等操作时,各数据行在内存中的位置不变,系统仅重新排列各数据行的索引值。

语法: STANDARD TABLE,现在ABAP版本可以省略STANDARD 关键字,默认定义的内表即为标准表

DATA:lt_ekpo TYPE STANDARD TABLE OF ty_ekpo.

定义关键字段: 默认为本行非数字,非内表的字段为关键字。

WITH NON-UNIQUE KEY ebeln ebelp.定义关键字(非必要)

DATA:lt_ekpo TYPE STANDARD TABLE OF ty_ekpo WITH NON-UNIQUE KEY ebeln ebelp.

NON-UNIQUE | UNIQUE :(非特有|特有)代表内表中定义的关键字的数据行是否能重复出现,UNIQUE代表相同关键字字段的行不能重复出现。因为标准表允许出现重复数据,因此,标准表中不允许使用UNIQUE KEY。

读取效率: 消耗时间随表行数呈线性增长。

2.2.2、排序表

说明: 每行数据也具有一个逻辑索引,并且总是按其关键字升序排序后再进行存储,其访问方式与标准表相同。

语法: SORTED TABLE

DATA:lt_sort TYPE SORTED TABLE OF ty_ekpo WITH NON-UNIQUE KEY ebeln ebelp.

定义关键字段: 可使用NON-UNIQUE | UNIQUE

读取效率: 系统使用二分法查找,消耗时间随表行数呈对数级增长。

2.2.3、哈希表

说明: 没有索引,只能通过关键字来访问。

语法: HASHED TABLE

DATA:lt_hash TYPE HASHED TABLE OF ty_ekpo WITH UNIQUE KEY ebeln ebelp.

定义关键字段: 哈希表关键字对应的行不允许重复,因此只能使用UNIQUE

读取效率: 系统用哈希算法管理表中的数据,因此查询一行数据的时间和表的行数无关。

2.2.4、访问方式

ABAP 辨析 标准表|排序表|哈希表_ABAP_02

根据数据预计的行数和访问频率,来决定使用什么类型的内表:

1、数据量少于100行,很少使用关键字操作,使用标准表没效率问题;

2、运行期间必须以某种排序形式出现的内表,使用排序表;

3、数据量较大,且不存在重复行,只需要使用关键字访问的内表,则定义哈希表;

java读写分离如何数据同步 java读写分锁

读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排它锁有了很大的提升。 一般情况下,读写锁的性能都会比排它锁好,因为大多数场景读是多于写的。在读多于写的情况下,读写锁能够提供比排它锁更好的并发性和吞吐量。Java并发包提供读写锁的实现是ReentrantReadWrit