桌面上的更新需要很长时间

时间:2018-01-12 16:25:23

标签: sql-server

这是我在博客上的第一个问题。

我正面临更新声明的问题。

我正在使用一台服务器(源服务器 - SS),并希望每天更新另一台服务器(目标服务器 - TS)上的表。但更新需要很长时间才能完成。

SS.Table1 - Row count over 5 Million
TS.Table2 - Row count over 50 Million

我每天都希望用SS.Table1中的约500条记录更新TS.Table2。

由于两个表都很大,我已将SS.Table1中的记录提取到Temp Table #Temp

Update TS.Table2
set TargetTable.ColumnName = SourceTable.ColumnName
from TS.Table2 T
JOIN #Temp S
on T.Col1 = S.Col1
and T.Col2 = S.Col2

注1:Col1和Col2都在目标表和源表上都有聚簇索引

注2:选择具有相同连接条件的Milli Seconds数据时。

注3:我尝试使用CTE更新Target表,但没有性能提升。

注4:即使更新一条记录,也需要500条记录

注意5:我在一些在线文章中,删除目标表和重新创建的索引可以提高性能并完成相同但没有改进。

如果没有提供足够的信息,请回复。

此致

1 个答案:

答案 0 :(得分:1)

过去我遇到过类似的问题。我使用的是SQL Server 2008.该版本需要sysadmin权限才能访问远程统计信息。没有远程统计信息,风险在于SQL Server将检索远程数据(50M行)并在本地执行。 http://www.sqlbadpractices.com/linked-servers-and-distributed-queries/ 我使用强制执行远程执行的openquery绕过了这个问题。

在您的情况下,您可以在远程登台表中写入500行,并使用openquery在远程服务器中完全执行更新。