Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Най-бързият начин за изпълнение на една и съща заявка няколко пъти в SQL Server

Повечето хора, които използват SQL Server, знаят за конвенцията за добавяне на GO до края на всяка партида от T-SQL изрази. Но може би по-малко известно е, че можете да добавите и цяло число след GO за да посочите колко пъти трябва да се изпълнява партидата.

Пример 1 – Основна употреба

Ето пример за това как работи.

ИЗБЕРЕТЕ GETDATE() КАТО DateTime;GO 3

Резултат:

+------------------------+| Дата и час ||------------------------------|| 2020-01-08 09:26:31.663 |+-------------------------+Начален цикъл на изпълнение+--------- ----------------+| Дата и час ||------------------------------|| 2020-01-08 09:26:31.663 |+-------------------------+Начален цикъл на изпълнение+--------- ----------------+| Дата и час ||------------------------------|| 2020-01-08 09:26:31.663 |+-------------------------+Начален цикъл на изпълнение:0,578 s

Посочих GO 3 което доведе до изпълнение на заявката три пъти. Освен това получавах думите „Начален цикъл на изпълнение“ всеки път, когато заявката се изпълняваше.

Получавам различни резултати за тази заявка в зависимост от това кой инструмент съм използвал за изпълнение на заявката. Това са резултатите, които получих, докато използвах mssql-cli инструмент за команден ред. Частичните секунди са еднакви. Но когато използвах Azure Data Studio, дробните секунди се увеличиха.

Пример 2 – Печат на дата/час

Ето пример, който стартирах с помощта на Azure Data Studio, показващ нарастването на частните секунди.

ДЕКЛАРИРАНЕ @theTime time(7) =GETDATE();PRINT @theTime;GO 5

Резултат:

Започна да изпълнява заявка на ред 4. Начало на цикъла на изпълнение 09:31:40.610000009:31:40.616666709:31:40.620000009:31:40.6233333409:0cu завършване на 09:09:31:40.610000009:31:40.616666709:31:40.620000009:31:40.6233333409:0cu завършване на 09:00:00:06:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 предварително> 

Пример 3 – Пример за база данни

Ето пример, който вмъква данни в база данни.

СЪЗДАВАНЕ НА ТАБЛИЦА LoopTest( LoopTestId уникален идентификатор НЕ НУЛА ПО ПОДРАЗБИРАНЕ NEWID(), InsertDate datetime2(7) НЕ НУЛА ПО ПОДРАЗБИРАНЕ GETDATE());GOINSERT LoopTest (LoopTestId, InsertDate)VALUES (DEFAULT, DEFAULT, LoopTestROM *FGO); 

Резултат:

+----------------------------------------+------- ---------------------+| LoopTestId | Вмъкване на дата ||-------------------------------------+-------- ---------------------|| 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 |+---------------------------------------------- +----------------------------+

В този случай и двете колони се вмъкват с DEFAULT , което води до това, че всяка колона се попълва със стойността по подразбиране (която също уточнявам). Първата колона има стойност по подразбиране NEWID() , функция, която генерира GUID. Втората колона има по подразбиране GETDATE() , което води до текущата дата и час.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получа последно въведен идентификатор?

  2. Използвайте SCOPE_IDENTITY(), за да върнете последно въведената стойност на самоличността в същия обхват (SQL сървър)

  3. SQL Server Database Change Listener C#

  4. как да присвоите стойност на cte на променлива

  5. Вмъкване на резултати от съхранена процедура във временна таблица