SQL-UPDATE: Mehrere Spalten in einer Anweisung oder mehrere einzelne-Spalte Aussagen?
Ist es effizienter ausführen UPDATE
- Anweisung mit mehreren Spalten
UPDATE myTable
SET [col1] = [col1] + 1,
[col2] = [col2] + 1,
[col3] = [col3] + 1,
...
[colN] = [colN] + 1
oder mehrere UPDATE
Aussagen mit einer einzelnen Spalte jeweils?
UPDATE myTable SET [col1] = [col1] + 1
UPDATE myTable SET [col2] = [col2] + 1
UPDATE myTable SET [col3] = [col3] + 1
...
UPDATE myTable SET [colN] = [colN] + 1
Wenn Sie ausführen, die Abfragen seperat erhalten Sie möglicherweise eine Verbindung overhead-je nachdem, wie Sie ausführen.
InformationsquelleAutor Nick Orlando | 2012-09-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können diese variieren mit der bestimmten Implementierung einer Datenbank-engine, aber ich werde meine Stimmen, dass ein einzelnes update wird in der Regel leistungsstärker als die aufeinander folgenden updates. Die DB braucht nur den gewünschten Datensatz einmal aktualisieren und die entsprechenden Werte, und mit ihm getan werden.
Nun, angesichts der Tatsache, dass plan-caches, Indizes, Optimierer und andere Elemente zur hand um Dinge zu machen, smarter on the fly, es kann gut sein, dass die multi-update-version wird fast Ansatz die Leistung des ehemaligen, aber meine Erwartung ist, dass, selbst unter den besten Umständen, der ehemalige besser.
InformationsquelleAutor David W
Es ist keine Frage überhaupt, dass die einzige Anweisung ist effizienter. Jeder update-Anweisung abrufen muss der Datensatz in den Speicher, ausführen des updates auf der Platte, und schreiben Sie dann die Ergebnisse.
Durch mehrere updates, die Sie gelesen haben, im Datensatz mehrfach, und schreiben Sie es auf mehrere Male. Mit einer Aussage, Sie tun dies einmal.
Darüber hinaus Datenbanken aufzeichnen von änderungen in einer log-Datei, um die Integrität der Daten. Jedes update wird protokolliert, unabhängig von der Anzahl der Felder geändert werden.
Die situation wird noch schlimmer, wenn Indizes, Tabellen, die größer als der Arbeitsspeicher, Einschränkungen und Trigger, die beteiligt sind.
Die zweite version dauert etwa N mal die erste version, wobei N die Anzahl der Spalten geändert werden.
InformationsquelleAutor Gordon Linoff