2016-04-25 60 views
0

我试图将大小约为5000万行的表复制到链接服务器上的另一个数据库中。它没有任何索引(尽管我不认为这应该有所作为)。我使用了以下查询:加速链接服务器上的[select * into table]

select * into [db2].[schema].[table_name] 
from 
openquery([linked_server_name], 
'select * from [db1].[schema].[table_name]') 

这花了大约7分钟。

这似乎很可疑,我打算做一个简单的复制和粘贴。我错过了什么吗?

我需要定期运行这个和在理想情况下想保持它作为(SISS使用将是理想的跨服务器没有手动复印表格)

任何想法,将不胜感激自动化越好!

多谢

+0

有副本增量数据更好。考虑表拷贝不是文件拷贝,7分钟不坏。 – qxg

回答

0

没有表的索引,SE​​LECT查询注定是缓慢的。索引有助于提高选择查询的性能。索引减慢了INSERT查询,因为它们必须添加数据并同时索引它。相反,索引创建提升了SELECT查询。

此外,您的数据是否被复制到自然界的事务中,或者您可以避免脏读?如果脏读没有问题,那么你可以在SELECT查询中使用WITH(NOLOCK)来避免和处理事务。

+0

我不认为索引为'SELECT * FROM ...'做出了改变。没有主键的表甚至在这种情况下足够快。 – qxg

+0

恕我直言请请参阅问题http://stackoverflow.com/questions/30856674/speeding-up-a-sql-query-with-indexes –

+0

有问题的查询没有任何过滤器。 – qxg

1

在这里可能有很多不同的原因,每个原因都会对'缓慢'产生累积影响。

看着wait states将成为第一个停靠港。

索引(至少在选择端)这里不是一个问题,没有使用谓词(在较小程度上使用所有列),因此您如何期望索引有用?

我会说行数不是一个有用的度量标准...... MB/GB是多大的源数据集?使用SSMS中的“包含客户端统计信息”来获取准确的数字。现在,如果这很“大”,如何通过网络拖动相同大小的.zip文件?