2012-04-17 97 views
1

我们即将开始一个新的过程。它将涉及超过50个表格,总数超过200万行。 该进程将在for/For each框中循环。在内部,桌子将遭受不同的过程。 Basicaly更新(最多的将会是一个删除查找重复项)。最后,我们将获得一张新表格,其中包含所有这50个表格的全部内容,并完成所有更新。SQL for Loop Tunning

所以我的问题是:在速度方面,在每个循环中查找表中的重复项是否更好。还是在检查完整结果的过程结束时进行全面删除更好? 工作量或多或少会相同。

非常感谢。

编辑。

更多的信息。

该循环是需要的。这50个表位于两个不同的服务器中。 Oracle和Access。循环是将它们填充到本地SQL服务器中。 在每个人口(循环)我做一些更新和工作表,以便他们准备好了。

现在的问题是,如果我们在表上执行的工作在进入循环或在其外部时更快。

谢谢,希望它变得更清晰。

+0

最好是在没有循环的情况下进行组合。 – HLGEM 2012-04-17 14:00:43

+0

@HLGEM - 总是?我*发现它*有时*是一个好主意,可以将大写写入更小的写入以节省事务日志开销等。 – MatBailie 2012-04-17 14:03:38

+0

@Dems并非总是,而是几乎总是当您每次循环一条记录时。如果你正在循环往往是一个好主意。 – HLGEM 2012-04-17 15:59:58

回答

1

听起来像一个单一的声明

此外,为什么denormalizing过早?

+0

我尝试了一个完整过程完成后的小副本。只使用2个表格。循环内的第一个删除。花了3.5秒。循环后的第2秒,耗时4.2秒。我不知道这是随机的时间,因为我选择了随机表,或者如果这是某种迹象。在涉及50张桌子之后,可能需要几分钟时间,所以我想马上开始做非规范化工作,如果可能的话 – 2012-04-17 13:53:57

+0

我觉得你不应该写一个循环......应该全部由sql语句。也许编辑问题以显示一些示例表格,数据和期望的结果 - 然后您可以获得一个很好的sql语句进行比较。 – Randy 2012-04-17 13:56:16