Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Schnellste Möglichkeit, dieselbe Abfrage mehrmals in SQL Server auszuführen

Die meisten Benutzer von SQL Server kennen die Konvention zum Hinzufügen von GO bis zum Ende jedes Stapels von T-SQL-Anweisungen. Aber vielleicht weniger bekannt ist, dass Sie auch eine Ganzzahl nach GO hinzufügen können um anzugeben, wie oft der Stapel ausgeführt werden soll.

Beispiel 1 – Grundlegende Verwendung

Hier ist ein Beispiel dafür, wie es funktioniert.

SELECT GETDATE() AS DateTime;GO 3

Ergebnis:

+-------------------------+| DatumUhrzeit ||-------------------------|| 08.01.2020 09:26:31.663 |+-------------------------+Ausführungsschleife beginnen+--------- ----------------+| DatumUhrzeit ||-------------------------|| 08.01.2020 09:26:31.663 |+-------------------------+Ausführungsschleife beginnen+--------- ----------------+| DatumUhrzeit ||-------------------------|| 08.01.2020 09:26:31.663 |+-------------------------+Beginn der AusführungsschleifeZeit:0,578s

Ich habe GO 3 angegeben was dazu führte, dass die Abfrage dreimal ausgeführt wurde. Außerdem erhielt ich jedes Mal, wenn die Abfrage ausgeführt wurde, die Worte „Ausführungsschleife wird gestartet“.

Ich erhalte unterschiedliche Ergebnisse für diese Abfrage, je nachdem, mit welchem ​​Tool ich die Abfrage ausgeführt habe. Dies sind die Ergebnisse, die ich bei der Verwendung von mssql-cli erhalten habe Kommandozeilen-Tool. Die Sekundenbruchteile sind alle gleich. Aber als ich Azure Data Studio verwendet habe, wurden die Sekundenbruchteile erhöht.

Beispiel 2 – Datum/Uhrzeit drucken

Hier ist ein Beispiel, das ich mit Azure Data Studio ausgeführt habe und das die Erhöhung der Sekundenbruchteile zeigt.

DECLARE @theTime time(7) =GETDATE();PRINT @theTime;GO 5

Ergebnis:

Ausführung der Abfrage in Zeile 4 gestartet Beginn der Ausführungsschleife09:31:40.610000009:31:40.616666709:31:40.620000009:31:40.623333309:31:40.6266667Batch-Ausführung fünfmal abgeschlossen...Gesamtausführungszeit:00:00:00.022 

Beispiel 3 – Ein Datenbankbeispiel

Hier ist ein Beispiel, das Daten in eine Datenbank einfügt.

CREATE TABLE LoopTest( LoopTestId uniqueidentifier NOT NULL DEFAULT NEWID(), InsertDate datetime2(7) NOT NULL DEFAULT GETDATE());GOINSERT LoopTest (LoopTestId, InsertDate)VALUES (STANDARD, STANDARD);GO 20SELECT *FROM LoopTest;GO 

Ergebnis:

+-------------------------------------+------- ----------------------+| LoopTestId | Einfügedatum ||--------------------------------------------------+-------- ---------------------|| d6eda0a2-710d-467e-a4cf-41602e161851 | 08.01.2020 09:37:38.4733333 || 0d8b3622-946f-4dce-816e-6123516da4e4 | 08.01.2020 09:37:38.4833333 || b3ac2482-7304-4846-a258-5dc51b2623f9 | 08.01.2020 09:37:38.4866667 || 1744836e-6af6-40c8-ab7e-98ca88e8ac1b | 08.01.2020 09:37:38.5000000 || 91c4858c-0c31-4d99-aba5-3a70424239fd | 08.01.2020 09:37:38.5066667 || f8b3de8b-7dd1-46c3-a7a8-b1af711d676d | 08.01.2020 09:37:38.5133333 || 306467d8-2e5b-4046-8102-a33f6906b41d | 08.01.2020 09:37:38.5233333 || 6cf93d79-5921-498e-ab14-55782284dc12 | 08.01.2020 09:37:38.5333333 || 7bb99e3b-d174-47eb-81b3-46b49982eaad | 08.01.2020 09:37:38.5500000 || c788d046-0c6c-4a2b-b3f1-3415470bf723 | 08.01.2020 09:37:38.5566667 || 52bb8951-8e71-46ac-ab98-1e261751dc5b | 08.01.2020 09:37:38.5600000 || 3a061055-0b1e-405c-aa13-480cdde8291c | 08.01.2020 09:37:38.5666667 || 1cabaf44-ac85-4bcf-8fee-7d349cb56561 | 08.01.2020 09:37:38.5700000 || 0cb3a690-66e9-458d-8c27-b0f44af4211d | 08.01.2020 09:37:38.5766667 || 19719223-eb9f-4477-82cc-e60995e0dcee | 08.01.2020 09:37:38.5800000 || 6da2484d-68c7-43f4-8ffc-968545974a42 | 08.01.2020 09:37:38.5833333 || d644bbed-047f-49ac-98c4-e032bdb4add3 | 08.01.2020 09:37:38.5900000 || 2c215900-0fd8-4889-8115-2a904ac72a61 | 08.01.2020 09:37:38.5933333 || 01ccc184-3657-4298-98a7-b31e158a56e8 | 08.01.2020 09:37:38.5933333 || 9270036f-8821-45c8-aef5-30aec2d4f4b4 | 2020-01-08 09:37:38.6000000 |+-------------------------------------- +-------------------------------------+

In diesem Fall werden beide Spalten mit DEFAULT eingefügt , was dazu führt, dass jede Spalte mit ihrem Standardwert gefüllt wird (den ich auch festlege). Die erste Spalte hat einen Standardwert von NEWID() , eine Funktion, die eine GUID generiert. Die zweite Spalte hat den Standardwert GETDATE() , was das aktuelle Datum und die aktuelle Uhrzeit ergibt.