0

我有一张桌子,它经过了一堆步骤,然后需要自行清理。我想在截断之前将此表中的值复制到另一个表中。我不会详细说明,但这是有充分理由的。

我试图找出最好的方法来做到这一点。我看到的两个选项是:

- 每次我插入/更新第一个表时,对第二个表执行相同的操作。

-一旦第一次完成,在它被截断之前,将它全部复制到第二个表中。

就性能而言,任何一种策略都比另一种更好吗?我没有太多的SQL经验,所以我没有任何想法。

4

3 回答 3

1

在不了解您的设置和瓶颈所在的情况下,不可能回答哪种策略对性能更好。数据输入/输出?记录 I/O?日志空间?维护窗口长度?“更好的性能”可以意味着“尽可能快”,也可以意味着“尽可能少的资源”。您提出的问题没有普遍适用的答案。

不过,一些谷歌面包屑可能会对您有所帮助:您的第一个表称为“暂存表”,第二个表称为“审核表”。关于它们的性能和设计存在很多讨论。您可能会找到与您的设置和要求相近的一种。

于 2013-07-17T15:39:12.477 回答
1

第二个选项在性能(批量插入)方面要好得多,因为您的表在操作开始之前将是空的,那么您需要做的就是 a Insert - select * ,它将所有您的记录插入到第二个表中。

于 2013-07-17T15:10:33.293 回答
0

我个人会选择选项#1。插入时,请执行两次。它使事情变得更容易,您不必稍后运行大量查询来复制它。

于 2013-07-17T15:08:11.440 回答