sql >> Databasteknik >  >> RDS >> Sqlserver

Snabbaste sättet att köra samma fråga flera gånger i SQL Server

De flesta som använder SQL Server känner till konventionen att lägga till GO till slutet av varje sats av T-SQL-satser. Men kanske mindre känt är att du också kan lägga till ett heltal efter GO för att ange hur många gånger batchen ska köras.

Exempel 1 – Grundläggande användning

Här är ett exempel på hur det fungerar.

VÄLJ GETDATE() SOM DateTime;GO 3

Resultat:

+------------------------+| DatumTid ||------------------------|| 2020-01-08 09:26:31.663 |+-------------------------+Börjande exekveringsloop+-------- ----------------+| DatumTid ||------------------------|| 2020-01-08 09:26:31.663 |+-------------------------+Börjande exekveringsloop+-------- ----------------+| DatumTid ||------------------------|| 2020-01-08 09:26:31.663 |+-------------------------+Börjande exekveringsloopTid:0,578s

Jag angav GO 3 vilket resulterade i att frågan kördes tre gånger. Jag fick också orden "Beginning execution loop" varje gång frågan kördes.

Jag får olika resultat för den här frågan beroende på vilket verktyg jag använde för att köra frågan. Det här är resultaten jag fick när jag använde mssql-cli kommandoradsverktyg. Bråksekunderna är alla desamma. Men när jag använde Azure Data Studio ökade antalet sekunder.

Exempel 2 – Skriv ut datum/tid

Här är ett exempel som jag körde med Azure Data Studio som visar att bråkdelssekunderna ökar.

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

Resultat:

Började köra frågan på rad 4 Började exekveringsslingan09:31:40.610000009:31:40.616666709:31:40.620000009:31:40.6233333309:31:60.70tal genomförd:exekveringstid:60.602 gånger:exekveringstid:60.602 gånger . före> 

Exempel 3 – Ett databasexempel

Här är ett exempel som infogar data i en databas.

CREATE TABLE LoopTest( LoopTestId uniqueidentifier NOT NULL DEFAULT NEWID(), InsertDate datetime2(7) NOT NULL DEFAULT GETDATE());GOINSERT LoopTest (LoopTestId, InsertDate)VALUES (DEFAULT, DEFAULTFROM GO 20TSELECTest); 

Resultat:

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

I det här fallet infogas båda kolumnerna med DEFAULT , vilket resulterar i att varje kolumn fylls i med sitt standardvärde (som jag också anger). Den första kolumnen har standardvärdet NEWID() , en funktion som genererar en GUID. Den andra kolumnen har som standard GETDATE() , vilket resulterar i aktuellt datum och tid.


  1. Automatisk radering av glömda transaktioner i MS SQL Server

  2. Arbeta med JavaFX Chart APIs

  3. Hur man använder GOTO i SQL Server

  4. Förstå vikten av minnesinställning i SQL Server