Wie Bulk-Update mit SQL Server?

Ich habe eine Tabelle mit 10 Millionen Zeilen, die ich brauche, um die Verknüpfung mit einer anderen Tabelle und aktualisieren Sie alle Daten. Das dauert mehr als 1 Stunde, und es erhöht meine Transaktions-log-in von 10+ GB. Gibt es eine andere Möglichkeit, um diese Leistung?

Glaube ich, dass nach jedem update der Indizes und constraints werden überprüft, und alle Informationen werden protokolliert. Gibt es eine Möglichkeit zu sagen, SQL Server, check-Einschränkungen nur nach dem update ist fertig und minimal-log des update-Aktion?

Meine Abfrage folgt. Ich habe einige Namen geändert, damit es leichter zu Lesen.

UPDATE o
SET o.Info1 = u.Info1, o.Info2 = u.Info2, o.Info3 = u.Info3
FROM Orders o
INNER JOIN Users u
ON u.ID = o.User_ID

EDIT: als fragte in den Kommentaren, die definition der Tabelle wäre so etwas wie das folgende (vereinfacht wieder, erstellen Sie eine Allgemeine Frage).

Tabelle Bestellungen

ID int PK
OrderNumber nvarchar(20)
User_ID int FK to table Users
Info1 int FK to table T1
Info2 int FK to table T2
Info2 int FK to table T3

Tabelle Benutzer

ID int PK
UserName nvarchar(20)
Info1 int FK to table T1
Info2 int FK to table T2
Info2 int FK to table T3
Ich habe sah ein Dutzend Fragen mit einem ähnlichen Titel, aber keiner von Ihnen versuchen, Sie zu verbessern Verwendung von SQL (nur mit C# - code).
Versuchen Sie es per batch. Können Sie die Tabelle Definitionen von Orders und Users?
Ich habe aktualisiert die Frage mit Ihrer Anfrage. Ihre Idee zu aktualisieren, indem Sie batch-wäre mit einer Schleife wie M. Ali Antwort?
Ja, das wäre es.

InformationsquelleAutor JoJo | 2015-01-13

Schreibe einen Kommentar