在SQL Server 2005中从小表批量复制到较大的表

bcp sqlbulkcopy sql-server sql-server-2005

我是SQL Server的新手,有以下困境:

我有两个具有相同结构的表。称之为runningTblfinalTbl

runningTbl每15分钟包含大约60万到100万行。

runningTbl进行一些数据清理之后,我想将所有记录移动到finalTblfinalTbl目前有大约3800万行。

上述过程需要每15-20分钟重复一次。

问题是,从runningTblfinalTbl的数据移动finalTbl会超过20分钟。

最初当表格很小时,需要10秒到2分钟的时间进行复制。

现在它只需要太长时间。

有谁可以帮忙吗?要查看的SQL查询..

谢谢

热门答案

对于初学者:多年来我学到的一件事是,MSSQL在优化各种操作方面做得很好,但这样做很大程度上依赖于所有相关表的统计数据。因此,我建议在运行实际插入之前运行“UPDATE STATISTICS processed_logs”和“UPDATE STATISTICS unprocessed_logs”;即使在一张大桌子上,这些东西也不会那么久。除此之外,基于上面的查询,很多依赖于目标表的索引。我假设目标表在(至少)UnixTime上有聚簇索引(或PRIMARY KEY),否则当你在现有记录之间挤压越来越多的数据时,你将创建主要的数据碎片。要解决这个问题,您可以尝试偶尔对目标表进行碎片整理(可以在线完成,但需要很长时间),但是制作聚簇索引(或PK)以便数据始终附加到表的末尾会是更好的方法;好吧,至少在我看来。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因