der folgende Code funktioniert gut, aber es dauert ein absolutes Alter zu laufen. Wie kann ich das beschleunigen?Leistungsproblem mit verteilten Abfragen
Hintergrund: Ich habe meinen lokalen Server mit meinem Remote-Server verbunden. Von meinem lokalen Server muss ich Daten von dem Remote-Server in meinen lokalen Server einfügen und dann die Tabelle auf meinem Remote-Server aktualisieren. Siehe Snippet für die genauen Details.
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)
EDIT:
Darüber hinaus ist es trotzdem kann ich komprimieren/zip wobei die Daten hin und her geschickt?
Sorry, vergessen zu erwähnen. Der INSERT ist erträglich. Es ist das Update, das langsam ist. Du hast recht, ich möchte den Traffic reduzieren. Leider kann ich dein Skript nicht testen, da ich jetzt gerade ins Büro gehe. Aber danke für deinen Beitrag. Ich werde es morgen versuchen und meine Ergebnisse veröffentlichen. – super9
Ursprünglich ziehen Sie Zeilen mit dem Datum IS NULL vom Remote-Server, aber Sie aktualisieren dann die Date-Spalte für Zeilen, für die DateCollected IS NULL ist. Das bedeutet, dass Sie möglicherweise lokal eine andere Gruppe von Zeilen einfügen als Sie aktualisieren. Ist das absichtlich? –
OH Lieber, DateCollected war ein Tippfehler meinerseits. Es sollte Datum sein. Also, um Ihre Frage zu beantworten, ist es die gleiche Menge von Daten, die ich einfügen und AKTUALISIEREN – super9