Sql server 提高连接链接服务器的更新查询的性能

Sql server 提高连接链接服务器的更新查询的性能,sql-server,performance,linked-server,Sql Server,Performance,Linked Server,我在SQL Server中有2个链接的服务器,希望更新远程数据库中的1条记录。 问题是查询需要非常长的6分钟,因为这只是一条记录,我需要更新数千条,所以我需要采取另一种方法。有什么其他的想法或建议我可以试试吗 我对LocalTable的TaskID、TaskType、ClosedOn+Completed+Started以及RemoteTable的TaskID、TaskType和状态都有索引 这就是我现在拥有的 UPDATE RemoteTable SET RemoteTable.TaskType

我在SQL Server中有2个链接的服务器,希望更新远程数据库中的1条记录。 问题是查询需要非常长的6分钟,因为这只是一条记录,我需要更新数千条,所以我需要采取另一种方法。有什么其他的想法或建议我可以试试吗

我对LocalTable的TaskID、TaskType、ClosedOn+Completed+Started以及RemoteTable的TaskID、TaskType和状态都有索引

这就是我现在拥有的

UPDATE RemoteTable
SET RemoteTable.TaskType = LocalTable.TaskType,
    RemoteTable.Status = CASE WHEN IsNull(LocalTable.ClosedOn, 0) <> 0 THEN 'Closed'
                              WHEN IsNull(LocalTable.Completed, 0) <> 0 THEN 'Completed'
                              WHEN IsNull(LocalTable.Started, 0) <> 0 THEN 'Started'
                        ELSE 'Created'
                END,
FROM Tasks LocalTable INNER JOIN [172.1.2.3].DBName.dbo.Tasks RemoteTable
     ON Local.TaskID = RemoteTable.TaskID
where RemoteTable.TaskID = 12345
以下执行计划:远程表扫描的100%基于远程表的任务ID。

我认为由于链接服务器的分布式事务,速度很慢

能否在远程服务器上编写存储过程并调用该存储过程来执行更新


如果我没记错的话,旧的作业插入不会出现此问题,因此您可以将数据加载到远程服务器上的暂存表中,远程存储过程可以处理这些“命令”来进行更新。

您应该发布执行计划问题更新出于好奇,您是否尝试过从任务本地表内部联接进行此联接[172.1.2.3]远程表上的.DBName.dbo.Tasks RemoteTable.TaskID=12345和Local.TaskID=12345远程表上的简单select语句的速度有多快?这里的问题可能是将本地表与远程表进行联接。我认为这可能是错误的。只是尝试一下,您是否尝试在本地联接表?例如发送本地表e连接到远程服务器并在那里远程运行所有内容?我建议您这样做: