приведенный ниже код отлично работает, но требуется абсолютный возраст для запуска. Как я могу ускорить это?Проблема с распределенными запросами
Фон: я связал свой локальный сервер с моим удаленным сервером. С моего локального сервера мне нужно вставить данные с удаленного сервера на локальный сервер, а затем обновить таблицу на удаленном сервере. См. Фрагмент для получения точных данных.
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
Вы изначально вытаскиваете строки, где Date IS NULL с удаленного сервера, но затем UPDATE столбец Date для строк, где DateCollected IS NULL. Это означает, что вы можете вставить другой набор строк локально, чем вы обновляете. Это специально? –
OH dear, DateCollected был опечаткой с моей стороны. Это должно быть дата. Таким образом, чтобы ответить на ваш вопрос, это тот же набор данных, которые я вставляю и обновляю. – super9