目前我们有两个批处理作业,它们获取不同的信息但功能相关。
假设Job1获取详细信息D1和D2
作业2取出D3
我们将这两个作业合并为一个,这样它就可以检索D1,D2和D3并写入一个文件。
与合并性能相关的一个挑战是D1包含来自D3的大部分信息。在合并作业中,我们希望在获取D1时排除D3信息。我正在考虑以下选项。请告知哪一个更好或有更好的选择。
合并应用程序中的数据。
1.1应用程序执行D3信息查询并将键值存储在Set
中
1.2应用程序执行D1和D2的查询
1.3在将D1信息写入文件时,它将检查地图并排除是否存在。
使用SQL UNION并创建单个查询
获取D1,D2,其中键不在(获取D3的所有键)
联盟
获取D3
考虑到巨大的表和连接,哪一个会有效。
答案 0 :(得分:1)
与任何性能问题一样,您应该测试不同的方法,以查看在您的环境中有效的方法。
我的偏见是做数据库中的所有工作。数据库可以为此类工作编组更多资源:
d1
这假设每个数据源中没有重复项,而不是d2
和{}
之间的重复项。