首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除比较所有字段的不相邻重复项。

删除比较所有字段的不相邻重复项。
EN

Stack Overflow用户
提问于 2015-01-07 16:15:35
回答 1查看 1.8K关注 0票数 2

从未排序的标准内表(无深度结构,任意大)中移除所有精确重复的最有效的方法是什么?

在运行DELETE ADJACENT DUPLICATES FROM itab COMPARING ALL FIELDS之前,我所能想到的只是简单地按其所有字段对整个事物进行排序。有没有更快或更好的选择?如果结构将字母数字字段与数字字段混合,这会导致问题吗?

为了提供上下文,我试图提高遗留程序中某些可怕的选择逻辑的性能。其中大多数在5-10个连接表上运行完整的表扫描,其中一些是自连接的。我在内存中留下了数十万行,我确信其中很大一部分只是重复的。但是,更改实际的选择过于复杂,需要/扩展/重新测试。仅仅删除重复项可能会将运行时减少一半,但我希望确保去重复本身不会增加太多的开销。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-07 16:55:33

我将调查两种方法:

  • 将原始索引存储在辅助字段中,SORT BY您想要比较的字段(可能使用STABLE),DELETE ADJACENT DUPLICATES,然后重新存储索引。
  • 对要比较的字段使用HASHED TABLE,通过数据表进行LOOP。使用哈希表上的READ TABLE .. TRANSPORTING NO FIELDS查找值是否已经存在,如果存在,则删除它-否则将值添加到哈希表中。

我不确定性能,但我建议对这两种方法的合理数据集使用SAT并对结果进行比较。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27823724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档