2016-08-09 262 views
-1

Gibt es eine Möglichkeit, die ich durch meine SQL Server-Tabelle durchlaufen und in eine Textdatei schreiben kann, wie lange es dauert zu löschen sagen wir alle 10.000 Zeilen?Wie durchlaufen SQL und drucken Ausgabezeit

DELETE FROM ORDERS o 
INNER JOIN CUSTOMER c 
    ON o.CustomerID = c.CustomerID 
WHERE ActiveDt < '03/03/2001'  

DELETE FROM CUSTOMER 
WHERE ActiveDt < '03/03/2001' 
+0

Wenn alles, was Sie eine Benchmark wollen, wäre es etwas falsch mit nur die Zeit die gesamte Löschabfrage Beobachtung nahm, dann Dividieren nach der Anzahl der zu löschenden Datensätze, um eine effektive Zeit pro Datensatz zu erhalten? –

+1

Sie müssten etwas tun, wie Top 10 zu löschen und das innerhalb einer Weile existiert. Ich würde die Zahl auf etwas größer als 10 ändern, obwohl die Zeit absurd schnell sein sollte, um 10 Zeilen gleichzeitig zu löschen. Ich muss allerdings fragen, was versuchst du wirklich hier zu machen? –

+0

@SeanLange --- Sie haben Recht, als 10 wäre ziemlich schnell, um etwas zu bemerken. Ich habe es auf mindestens 10.000 Zeilen geändert. Zu Testzwecken versuche ich zu sehen, wie lange es dauert, die Zeilen auszuführen, indem man eine Textdatei ausdruckt. Ich möchte nicht Top 10 usw. definieren. Ich will nur, dass es 10.000 Zeilen löscht, schreibe das Timeout und fahre mit dem Löschen fort. – user1884032

Antwort

0
DECLARE @TS AS datetime; 
DECLARE @CNT int; 

lab: 
SET @TS = getdate(); 
;WITH CTE AS (SELECT TOP 10000 * from CustTable) 
    DELETE CTE ; 

SET @CNT = @@rowcount; 

PRINT DATEDIFF(millisecond, @TS, getdate()); --write away somewhere if required 

If @CNT > 0 
    GOTO lab 

Sie spWriteStringToFile nutzen könnten Daten in eine Textdatei zu drücken

+0

Ich möchte nicht "Top 10000" definieren. Einfach gerade löschen, Zeit ausdrucken, weiter mit löschen. – user1884032

+0

aber Sie möchten eine bestimmte 10.000 Zeilen auf einmal löschen - ist das richtig? Meine Idee ist, die ersten 10.000 Zeilen in keiner bestimmten Reihenfolge zu erfassen und sie dann zu löschen. Oh, ich sehe, Sie möchten eine Art asynchrone Ausgabe von Zeitdaten ausführen - Tut mir leid, ich weiß nicht, wie es in SQL zu tun ist, möglicherweise gibt es Performance-Tools oder ein Flag in der SQL-Befehlszeile ausführen - aber ich weiß es nicht, Es tut uns leid! – Cato