背景:在某个财务数据单中,增加一列银行备注。
方案一:通过 收款单号(例如:20220419ABA00100000099072773758) 查询到交易单号(例如:2022041940000001317768330300405),再查询到充值单号(例如:1003703828D6399362770464900575),再查询到 备注 信息,付款集群,db_loan_xx.charge_xx_x ,字段 bank_comment。由于该表是以付款中心的充值单号进行切割,无法进行关联查询,因此需要先查询当天全部充值记录,然后在进行交易单号的匹配
缺点:涉及到不同集群,只能通过关键索引关联,查询数据集合for循环,在查另外集群,运行后存在一定的脚本时长。测试统计大概用时1小时。如果关联字段不存在索引将耗时8小时左右。
方案二:通过大表db_loan.big_charge,该表在F_create_time字段上建有索引,查询时加上创建时间。每一天的数据大概在10w-20w之间。查询该表一天的交易数据,然后for循环该表,将收款单号作为key,备注2作为value,以数组的形式存在内存中。在写入时,直接使用收款单号的数组下标。
缺点:对内存要求较大。需要提前判断内存量
方案三:一二方案折中,收款单号每500次进行查询一次,然后使用where in 查询银行备注字段,存入内存,循环写入。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/272172.html