【发布时间】:2013-06-30 02:56:30
【问题描述】:
我必须删除一些被认为无用的记录。
有一个地址文件和一个订单历史文件。在拥有消费品的公司中,他们会收到许多产品咨询或开始销售,但从未成为销售。
每次查询都会在地址文件中获得一条记录,即客户编号。在订单历史文件中是相同的客户编号和后缀字段。它从 000 开始,并在有新订单时递增。大部分业务实际上是一个循环模型。
只有“000”记录(可能有多个 000)的客户,意味着他们从未购买过我们希望从这些文件中清除的任何东西。
我正在考虑一个简单的 RPG 程序,但如果可能的话,我也对使用 SQL 或其他方法感兴趣。
在这个阶段,我们实际上不会删除,而是将建议的记录复制到一个输出文件中,该文件将被审查并存储起来以备不时之需。
F Addressfile IF E
F OrderHistory IF E
**** create 2 output file clones but with altered name for now.
F Zaddressfile O E
F ZorderHistory O E
*inlr doweq *off
Read Addressfile lr
*inlr ifeq *off
move *off Flg000
exsr Chk000
Flg000 ifeq *on
iter
else exsr purge
endif
endif
enddo
Chk000 begsr
**基本上在 orderhistory 上设置为不同的逻辑 只要我们有匹配的客户编号,就可以阅读 如果有后缀 not = 000 那么我们打开标志 然后出去。
purge subr 将不得不再次读取以获取从 orderhistory 文件中清除所需的记录,方法是使用仍在读取地址文件中的相同客户编号。因为我不确定 subr 对客户有什么价值,我不想存储它。
然后它将写入新文件,包括地址文件,然后我们可以迭代读取下一个 地址文件中的客户。
我们也不能假设如果有人买了,他们有一个 001,也许它多年来被删除了。
如果我们这样做了,我可以简单地链接它。
【问题讨论】:
-
问题是什么?
-
我可以发誓我读过一些文章,显示使用 SQL 进行批处理相对于原生 IO 的速度提升,但不知道它现在在哪里。有趣的是,我在这里重新编写了一个流程(以及一些新的索引,这些索引对于原生 IO 来说很难“使用”),从大约 24 小时……到 2 小时。
标签: db2 ibm-midrange rpgle db2-400