下面的代码工作正常,但需要绝对年龄才能运行。我如何加快速度?分布式查询的性能问题
背景:我已将本地服务器链接到远程服务器。在我的本地服务器上,我需要将远程服务器的数据插入本地服务器,然后更新远程服务器上的表。有关确切的细节,请参阅片段。
DECLARE @temp1 TABLE
(LoginID INT PRIMARY KEY,
UserID UNIQUEIDENTIFIER,
Message NCHAR(1000))
INSERT INTO [My Local Server].[DB Name].dbo.Login
(LoginID, UserID, Message)
OUTPUT INSERTED.LoginID, INSERTED.UserID, INSERTED.Message INTO @temp1
SELECT LoginID, UserID, Message
FROM [Remote Server].[Remote DB Name].dbo.Login2
WHERE Date IS NULL
UPDATE [Remote Server].[Remote DB Name].dbo.Login2
SET Date = GETDATE()
FROM [Remote Server].[Remote DB Name].dbo.Login2 AS z
WHERE EXISTS (SELECT 1 FROM @temp1 AS x WHERE z.Date IS NULL AND x.LoginID = z.LoginID)
编辑:
此外,反正是有,我可以压缩/ ZIP被发送的数据来回?
对不起,忘了提及这一点。 INSERT是可以忍受的。它的更新速度很慢。你说得对,我正在减少流量。不幸的是我不能测试你的脚本,因为我现在只是走出去办公室。但是,谢谢你的贡献。我会明天尝试并发布我的结果。 – super9 2009-06-30 19:06:56
您最初从远程服务器中抽取了Date IS NULL的行,但随后您为DateCollected为NULL的行更新了Date列。这意味着您可以在本地插入一组不同的行,而不是更新。这是故意的吗? – 2009-06-30 22:44:28