如何比较oracle中两个大表之间的数据而不影响生产环境

时间:2016-11-15 16:38:58

标签: sql database oracle plsql cursor

我在两张巨大的牌桌比较数据时面临问题。

场景:

问题:我必须找出两组数据之间的差距,这些数据存储在oracle DB的表中并且在其上有实时的siebel应用程序。我不能简单地在整个数据集(8,000,000行)上使用select语句,这会影响应用程序的性能。

我现在做了什么:

简单地将光标放在一组数据上,并将我的逻辑与其他数据集进行比较,并根据逻辑在其他表中插入间隙,但在此解决方案中,它一次比较一行,这是一个非常慢的过程和获取时间过了一会儿。

任何人都可以建议任何比这更好的解决方案,以便它可以加快这个过程非常感谢帮助。

1 个答案:

答案 0 :(得分:-1)

根据确切的用例,可以有几种不同的方法来提高性能。根据您提供的信息,以下几点可能有用。

  1. 使用“减号”或“不存在”重写查询。

  2. 在where子句中使用的列上创建索引。请注意,索引创建将占用时间和资源并影响系统,因此建议在服务器上的负载较低时执行此操作。如果索引已经存在且未使用,请尝试使用提示。

  3. 如果这些表中的数据是静态的,请尝试在测试环境中复制表并运行相应的测试。

  4. 在8M行上使用游标听起来效率不高,除非这是唯一的方法。

    如果您提供更多详细信息,我们可能会提供更好的建议。