ABAP提供了三种类型的内表, 即:标准表(Standard Table), 排序表(Sorted Table), 哈希表(Hashed Table)。在未声明内表类型时,系统会将类型默认为标准表。
然而,标准表其实并不适用于所有的业务场景,我们应当根据实际的需求,定义使用合适类型的内表。
1. 内表的类型
让我们回顾下不同内表的访问方式。标准表和排序表是可以既通过index访问,有可通过key访问;而哈希表只能通过键值访问。
三种内表的特征如下表:
2. 使用原则
标准表:当数据量较小(<100 entries), 并既需要使用索引访问,又需要通过不同的键值访问时,可以定义使用标准表。当通过键值访问时,应当使用SORT + BINARY SEARCH的语法,
也即使用二分查找算法替代顺序查找。在排序时,应尽量明确指定排序的字段。
排序表:当访问内表的主要方式是通过“主键访问”时,应定义使用排序表。排序表的主键
可以不唯一。
哈希表:完全通过主键访问数据,并且在数据量较大时,应使用Hash表。在数据量不大时,Hash表的查找速度和Sorted表类似。在某种程度上,Hash表的性质等同于主键唯一的
Sorted表。
3. 注意事项
避免通过顺序查找的方式访问含有大量数据的内表;
避免在嵌套的循环中,通过顺序查找的方式访问内表;
无论哪一种内表,都要避免内表数据过大的情况发生,因为CPU的内存是有限的,无限制
增加内表的数据量会至系统DUMP;
对于大数量的情形,应采用分批次、分包的处理方式。