我在两张巨大的牌桌比较数据时面临问题。
场景:
问题:我必须找出两组数据之间的差距,这些数据存储在oracle DB的表中并且在其上有实时的siebel应用程序。我不能简单地在整个数据集(8,000,000行)上使用select语句,这会影响应用程序的性能。
我现在做了什么:
简单地将光标放在一组数据上,并将我的逻辑与其他数据集进行比较,并根据逻辑在其他表中插入间隙,但在此解决方案中,它一次比较一行,这是一个非常慢的过程和获取时间过了一会儿。
任何人都可以建议任何比这更好的解决方案,以便它可以加快这个过程非常感谢帮助。
答案 0 :(得分:-1)
根据确切的用例,可以有几种不同的方法来提高性能。根据您提供的信息,以下几点可能有用。
使用“减号”或“不存在”重写查询。
在where子句中使用的列上创建索引。请注意,索引创建将占用时间和资源并影响系统,因此建议在服务器上的负载较低时执行此操作。如果索引已经存在且未使用,请尝试使用提示。
如果这些表中的数据是静态的,请尝试在测试环境中复制表并运行相应的测试。
在8M行上使用游标听起来效率不高,除非这是唯一的方法。
如果您提供更多详细信息,我们可能会提供更好的建议。