SQL Server sammeln die Gesamtsumme der Berechnungsmethoden im Detail
Berechnung der Akkumulation in der SQL -Abfrage ist eine häufige Nachfrage.
Feier bietet eine bequeme Methode zur Durchführung solcher Berechnungen in Oracle und ANSI-SQL. SQL Server fehlt jedoch die Flexibilität, einige Anwendungsfälle bei der Implementierung von OVER
-Klauseln zu bearbeiten. OVER
Aktualisieren Sie Fähigkeiten
Trotz der Mängel berechnet eine in SQL Server berechnete effektive Technik, um die Akkumulation der Akkumulation zu berechnen, um einen Polymerisierungssatz zu verwenden. Diese Methode enthält:
Erstellen Sie eine temporäre Tabelle mit derselben Spalte wie die ursprüngliche Tabelle.
Fügen Sie die Daten in die ursprüngliche Tabelle in die temporäre Tabelle ein und setzen Sie die akkumulierte Gesamtspalte auf NULL. -
Die temporäre Tabelle wird basierend auf dem vorherigen Wert berechnet. -
- Diese Technik ist sehr effizient, aber es gibt potenzielle Probleme:
Die Reihenfolge der Anweisungsverarbeitungszeilen entsprechen möglicherweise nicht immer dem Datum des Datums.
Aktualisierungsfähigkeiten hängen von den Details der unbeabsichtigten Implementierung des SQL Servers ab. -
UPDATE
Der Benchmark -Testvergleich
- Der Benchmark -Test zeigt, dass unter den Einschränkungen des SQL -Servers die Cursormethode darin besteht, die schnellste und sicherste Methode für die Akkumulation der Akkumulation zu berechnen. Aktualisierungsfähigkeiten bieten die höchste Leistung, aber es gibt potenzielle Probleme in der Reihenfolge der Verarbeitung. Für den Produktionscode wird daher empfohlen, eine markierungsbasierte Methode zu verwenden.
Beispielcode und Benchmark -Testdaten
Der folgende Code enthält Arbeitsbeispiele und Testdaten für den Benchmark -Test:
Testerdateneinstellungen:
Testmethode:
Test 1: Verwandte untergeordnete Abfrage
<code class="language-sql">CREATE TABLE #t (
ord INT PRIMARY KEY,
total INT,
running_total INT
);
SET NOCOUNT ON;
DECLARE @i INT;
SET @i = 0;
BEGIN TRAN;
WHILE @i < 10000
BEGIN
INSERT INTO #t (ord, total) VALUES (@i, ABS(CHECKSUM(NEWID()) % 1000));
SET @i = @i + 1;
END;
COMMIT TRAN;</code>
Nach dem Login kopieren
Test 2: Cross -Connection
Test 3: Cursor
<code class="language-sql">SELECT ord,
total,
(SELECT SUM(total)
FROM #t b
WHERE b.ord <= a.ord) AS RunningTotal
FROM #t a
ORDER BY a.ord;</code>
Nach dem Login kopieren
Test 4: Aktualisieren Sie die Fähigkeiten
<code class="language-sql">SELECT a.ord,
a.total,
SUM(b.total) AS RunningTotal
FROM #t a
CROSS JOIN #t b
WHERE b.ord <= a.ord
GROUP BY a.ord, a.total
ORDER BY a.ord;</code>
Nach dem Login kopieren
Durch die Implementierungseffizienz der oben genannten vier Methoden kann die Best Practice zur Berechnung der Akkumulation auf dem SQL -Server erhalten werden. Es ist zu beachten, dass die tatsächliche Leistung von Datenvolumen und Serverkonfiguration variieren kann.
Das obige ist der detaillierte Inhalt vonWas ist der effizienteste Weg, um die Laufzeiten in SQL Server zu berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!