我发现了关于这一点的各种意见,包括对一篇文章的引用,该文章表明“选择进入”运算符可以从2014年开始并行运行,因此可能会或者可能不会比“插入”更有效。
我的用例是将数据从一个表移动到另一个表,跨数据库,同一个实例,2014年。插入将是5-10M行,我不关心只记录效率。我需要一般性建议,而不是个案分析。
我意识到还有其他因素(行长等)可能影响答案,但我正在寻找最好的起点。如有必要,我总是可以尝试其他方法。
那么在一个数据库中从另一个数据库加载一个表的最有效方法是什么呢?
提前致谢!
答案 0 :(得分:1)
我建议使用一个执行BULK操作的SSIS(SQL Server Integration Services)包。虽然在我们当前的世界中,5M行并不重要。
由于“它取决于”,你必须帮助我们理解你想要保存的东西。 INSERT INTO很好,只是因为它是自包含的并且“简单”。如果这是一次性交易,你可以这样做,并停止思考它。
但是,如果你每天要挖10M记录 - 你可能会考虑一个预定的SSIS脚本。维护脚本有开销,但通常更快。如果您正在为测试目的重新加载数据(重置为基线),那么SSIS包是一个很好的方法。
您还可以查看以下文章:https://dba.stackexchange.com/questions/99367/insert-into-table-select-from-table-vs-bulk-insert