ABAP 辨析 标准表|排序表|哈希表
1、文档介绍
本文档将介绍内表的区别和用法,涉及标准表、排序表、哈希表
2、用法与区别
2.1、内表种类
内表顶层为任意表,任意表分为索引表和哈希表,索引表又可分为标准表和排序表,结构如图:

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、访问方式

根据数据预计的行数和访问频率,来决定使用什么类型的内表:
1、数据量少于100行,很少使用关键字操作,使用标准表没效率问题;
2、运行期间必须以某种排序形式出现的内表,使用排序表;
3、数据量较大,且不存在重复行,只需要使用关键字访问的内表,则定义哈希表;
定期更文,欢迎关注

ABAP 辨析 标准表|排序表|哈希表的更多相关文章
- 集合>哈希表类Hashtable和SortedList排序列表类
集合>哈希表类Hashtable Hashtable一种键值对的集合 ,哈希表内部的排列是无序的,而且哈希表没有提供排序方法. 集合>哈希表类Hashtable>构造普通哈希表 代码 ...
- 深入理解PHP内核(六)哈希表以及PHP的哈希表实现
原文链接:http://www.orlion.ga/241/ 一.哈希表(HashTable) 大部分动态语言的实现中都使用了哈希表,哈希表是一种通过哈希函数,将特定的键映射到特定值得一种数据 结构, ...
- [转]net中哈希表的使用 Hashtable
本文转自:http://www.cnblogs.com/gsk99/archive/2011/08/28/2155988.html 以下是PetShop中DBHelper中的使用过程: //创建哈希表 ...
- 简单的哈希表实现 C语言
简单的哈希表实现 简单的哈希表实现 原理 哈希表和节点数据结构的定义 初始化和释放哈希表 哈希散列算法 辅助函数strDup 哈希表的插入和修改 哈希表中查找 哈希表元素的移除 哈希表打印 测试一下 ...
- 哈希表(Hashtable)简述
一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中 ...
- Java数据结构和算法 - 哈希表
Q: 如何快速地存取员工的信息? A: 假设现在要写一个程序,存取一个公司的员工记录,这个小公司大约有1000个员工,每个员工记录需要1024个字节的存储空间,因此整个数据库的大小约为1MB.一般的计 ...
- C++ STL中哈希表Map 与 hash_map 介绍
0 为什么需要hash_map 用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能.例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华 ...
- C#中哈希表(HashTable)的用法详解以及和Dictionary比较
1. 哈希表(HashTable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对, ...
- 源码:Java集合源码之:哈希表(二)
要想知道一个元素是否在数组或链表中,只能从前向后挨个对比,无论是数组还是链表,其对数据的查询表现都比较无力.在的二叉排序树中,还会将数据排序以进行二分查找,将时间复杂度从O(n)降低到O(lg n). ...
- 自己动手实现java数据结构(五)哈希表
1.哈希表介绍 前面我们已经介绍了许多类型的数据结构.在想要查询容器内特定元素时,有序向量使得我们能使用二分查找法进行精确的查询((O(logN)对数复杂度,很高效). 可人类总是不知满足,依然在寻求 ...
随机推荐
- Java多线程消费消息
多线程消费消息 关键词:Java,多线程,消息队列,rocketmq 多线程一个用例之一就是消息的快速消费,比如我们有一个消息队列我们希望以更快的速度消费消息,假如我们用的是rocketmq,我们从中 ...
- Educational Codeforces Round 56 (Rated for Div. 2) G题(线段树,曼哈顿距离)
题目传送门 以二维为例,二维下两点间的曼哈顿距离最大值为\(max(|x_i-x_j| + |y_i-y_j|)\),可以通过枚举坐标符号正负来去掉绝对值.即\(max(x_i-x_j+y_i-y_j ...
- Why Microservices ?
微服务(Microservices)是一种软件架构设计风格,其中应用程序由一组小型.独立.自治的服务组成,这些服务共同工作以构建整体应用.每个服务都专注于一个特定的业务功能,可以独立部署.扩展和维护. ...
- mysql数据库数据同步几种通用方法?
MySQL数据库数据同步的几种通用方法包括以下几个方面: 一.基于主从同步 主从同步是 MySQL 数据库最为常见和基本的同步方式,即其中一台 MySQL 服务器作为主服务器(Master),另外一台 ...
- Socket.D 网络应用协议,首版发布!
有用户说,"Socket.D 之于 Socket,尤如 Vue 之于 Js.Mvc 之于 Http" 主要特性 基于事件,每个消息都可事件路由 所谓语义,通过元信息进行语义描述 流 ...
- [NOI online2022普及A] 王国比赛
题目描述 智慧之王 Kri 统治着一座王国. 这天 Kri 决定举行一场比赛,来检验自己大臣的智慧. 比赛由 \(n\) 道判断题组成,有 \(m\) 位大臣参加.现在你已经知道了所有大臣的答题情况, ...
- Pix4Dmapper空间三维模型的应用实例:GIS选址分析
本文介绍基于无人机影像建模完成后的结果,利用ArcMap软件进行空间选址分析,从而实现空间三维模型应用的方法. 目录 1 空间分析目标确立 2 基于基本约束条件的选址求解 2.1 坡度计算与提取 ...
- ElasticSearch之cat segments API
命令样例如下: curl -X GET "https://localhost:9200/_cat/segments?v=true&pretty" --cacert $ES_ ...
- [研究]SpringBoot-MybatisPlus-Dynamic(多数据源)
SpringBoot-MybatisPlus-Dynamic(多数据源) 前言 基于工作上班累死了...打开自己电脑 不知道干些啥 就康康 PL 网站康康 更新了啥 咦~~~还挺多 看到了多数 ...
- JavaFx之全局异常捕获(二十)
JavaFx之全局异常捕获(二十) javafx开发时,我们有时候需要捕获未处理的异常.手动抛出的异常,在main方法中添加下面代码: public static void main(String[] ...