我正在尝试将大小约为5000万行的表复制到链接服务器上的另一个数据库中。它没有任何索引(虽然我不认为这应该有所作为)。我使用了以下查询:
select * into [db2].[schema].[table_name]
from
openquery([linked_server_name],
'select * from [db1].[schema].[table_name]')
大约需要7分钟。
对于我打算简单复制和粘贴的内容,这似乎很可疑。我错过了什么吗?
我需要定期运行它,并且最好保持尽可能自动化(使用SISS的服务器之间的手动复制表不是理想的)
任何想法都将受到高度赞赏!
非常感谢
答案 0 :(得分:1)
这里可能存在许多不同的原因,每个原因都会对“慢慢”产生累积影响。
查看wait states将是第一个停靠点。
索引(至少在选择方面)这里不是问题,没有使用谓词(在较小程度上使用所有列)因此你会如何期望索引有用?
我想说行数不是一个有用的指标......源数据集的MB / GB有多大?使用"包括客户统计"在SSMS中获得准确的数量。现在,如果那是“大”'如何通过网络拖动相同大小的.zip文件?
答案 1 :(得分:0)
如果没有表的索引,SELECT查询就会很慢。索引有助于提高选择查询的性能。索引会减慢INSERT查询的速度,因为它们必须添加数据并同时对其进行索引。相反,索引创建会提升SELECT查询。
此外,您的数据本质上是复制交易还是可以取消脏读?如果脏读是正常的,那么您可以在SELECT查询中使用WITH(NOLOCK)来避免和交易问题。