Sql server SQL Server-是否插入大量行?
我在这里读了很多关于这个主题的答案,但是每个人都建议使用.net中的BCP | | SqlBulkCopy类 我有一个查询,它将从不同表中选择的5个并集插入targetTable 我对所选的表有正确的索引。并且在targetTable上只有1个聚集标识索引。然而,这需要很长的时间~25分钟。我说的是5M行x20列 当我看sp_who2时,大多数时候,它是暂停的 我想使用大容量复制,但不是从.net数据库获取数据-因此我不需要转到C 问题 如何在select命令中使用大容量插入无bcp? 还有,为什么大部分时间都是暂停的?我怎样才能赋予我的查询更高的优先级? 多谢各位Sql server SQL Server-是否插入大量行?,sql-server,performance,sql-server-2005,Sql Server,Performance,Sql Server 2005,我在这里读了很多关于这个主题的答案,但是每个人都建议使用.net中的BCP | | SqlBulkCopy类 我有一个查询,它将从不同表中选择的5个并集插入targetTable 我对所选的表有正确的索引。并且在targetTable上只有1个聚集标识索引。然而,这需要很长的时间~25分钟。我说的是5M行x20列 当我看sp_who2时,大多数时候,它是暂停的 我想使用大容量复制,但不是从.net数据库获取数据-因此我不需要转到C 问题 如何在select命令中使用大容量插入无bcp? 还有,为
p、 由于安全限制,我不能在这里使用bcp。。。我没有运行此操作的权限。你是对的:这比平常需要更长的时间。你每秒有3k行。你应该很容易获得每秒10公里或20公里的速度。在最佳情况下,每个CPU核心每秒200k 我怀疑你是在整张桌子上插东西,而不仅仅是在最后。在这种情况下,每秒3k行并不罕见 在任何情况下,批量复制都无法帮助您。它的插入速度并不比仅限服务器的insert语句快
不过,您可以使用多个线程进行插入。将行源划分为N个不同的范围,并从单独的连接同时插入每个范围。如果您是CPU受限的,这将有所帮助。如果您是IO绑定的,则不会出现此问题。您是否考虑过在SQL server中使用“导出数据向导”?您还可以将其另存为SSIS包,并在以后需要时使用。它支持为源数据指定自定义查询。@用于开始整个过程的命令来自网页上的一个按钮……该按钮启动sp,该sp开始将数据提取到目标表中。。。所以我不认为它在这里是可以实现的。你可以在运行Sql Profiler时尝试一下coon的建议,看看它是如何实现的。你是什么意思?在整个表中插入?在随机位置,而不是在末尾。这是一个id标识为1,1的普通表。怎么可能不在最后呢?嗯,在这种情况下,我不知道为什么它对你来说那么慢。您需要发布更多代码和insert语句的执行计划作为屏幕截图。也许我能发现一些问题。