大SQL查询与多个数据库调用和应用程序中的合并联合

时间:2018-02-01 17:17:36

标签: sql oracle

目前我们有两个批处理作业,它们获取不同的信息但功能相关。

假设Job1获取详细信息D1和D2
    作业2取出D3

我们将这两个作业合并为一个,这样它就可以检索D1,D2和D3并写入一个文件。

与合并性能相关的一个挑战是D1包含来自D3的大部分信息。在合并作业中,我们希望在获取D1时排除D3信息。我正在考虑以下选项。请告知哪一个更好或有更好的选择。

  1. 合并应用程序中的数据。

    1.1应用程序执行D3信息查询并将键值存储在Set
    中 1.2应用程序执行D1和D2的查询 1.3在将D1信息写入文件时,它将检查地图并排除是否存在。

  2. 使用SQL UNION并创建单个查询

    获取D1,D2,其中键不在(获取D3的所有键)

    联盟

    获取D3

  3. 考虑到巨大的表和连接,哪一个会有效。

1 个答案:

答案 0 :(得分:1)

与任何性能问题一样,您应该测试不同的方法,以查看在您的环境中有效的方法。

我的偏见是做数据库中的所有工作。数据库可以为此类工作编组更多资源:

d1

这假设每个数据源中没有重复项,而不是d2{}之间的重复项。