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
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst gibt es keine solche Sache wie
BULK UPDATE
ein paar Dinge, die Sie tun können, sind wie folgt:updates in kleineren Chargen , so etwas wie
Hinweis
wenn man mit der einfach-Modus-option, vergessen Sie nicht, nehmen Sie ein voll-backup schaltet man den recovery-Modus wieder voll. Da Sie einfach schalten Sie es wieder auf volle recovery-Modus wird nicht strat-Protokollierung, bis Sie eine vollständige Sicherung.
InformationsquelleAutor M.Ali