转换非常大的SQL Server表的最快方法

时间:2017-12-29 17:04:13

标签: sql sql-server database sql-server-2012

我们正在重新设计SQL Server 2012中一个非常大的(~100Gb,分区)表。

为此,我们需要将旧(现有)表中的数据转换为生产服务器上新设计的表。新表也是分区的。行仅附加到表格中。

问题是很多用户在这台服务器上工作,我们只能在块中以及服务器没有负载(每天几个小时)的情况下完成此转换过程。

我想知道是否有更好的&更快的方式?

这次我们将在几天内完成转换过程(然后切换我们的应用程序以使用新表),但如果表是1Tb我们会怎么做?还是10Tb?

PS。关于当前流程的更多细节:
这些表根据CloseOfBusinessDate列(DATE)进行分区。目前,我们在服务器处于低负载时运行此查询:

_

旧表中大约1M行每天都会在新表中转换为200M行 完成转换过程后,我们只需更新我们的应用程序即可使用NewTable。

1 个答案:

答案 0 :(得分:1)

每个人都花时间阅读这个问题并试图帮助我,对不起,我自己没有足够的细节。原来从旧表中选择数据并转换它的查询非常慢(感谢@Martin Smith我决定检查SELECT查询)。该查询涉及解析xml&使用交叉申请。我认为在我们的案例中更好的方法是编写一个小应用程序,只需每天从旧表中加载数据,在内存中转换它,然后使用批量复制插入到新表中。