Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách nhanh nhất để chạy cùng một truy vấn nhiều lần trong SQL Server

Hầu hết những người sử dụng SQL Server đều biết về quy ước thêm GO vào cuối mỗi lô câu lệnh T-SQL. Nhưng có lẽ ít được biết đến hơn, là bạn cũng có thể thêm một số nguyên sau GO để chỉ định số lần lô sẽ chạy.

Ví dụ 1 - Cách sử dụng cơ bản

Dưới đây là một ví dụ về cách nó hoạt động.

 CHỌN GETDATE () AS DateTime; ĐI 3 

Kết quả:

 + ------------------------- + | DateTime || ------------------------- || 2020-01-08 09:26:31.663 | + ------------------------- + Vòng lặp thực thi bắt đầu + --------- ---------------- + | DateTime || ------------------------- || 2020-01-08 09:26:31.663 | + ------------------------- + Vòng lặp thực thi bắt đầu + --------- ---------------- + | DateTime || ------------------------- || 2020-01-08 09:26:31.663 | + ------------------------- + Bắt đầu thực thi vòng lặp Thời gian:0,578 giây 

Tôi đã chỉ định GO 3 dẫn đến truy vấn chạy ba lần. Tôi cũng nhận được các từ “Bắt đầu vòng lặp thực thi” mỗi khi truy vấn chạy.

Tôi nhận được các kết quả khác nhau cho truy vấn này tùy thuộc vào công cụ tôi đã sử dụng để chạy truy vấn. Đây là những kết quả tôi nhận được khi sử dụng mssql-cli công cụ dòng lệnh. Các giây phân số đều giống nhau. Nhưng khi tôi sử dụng Azure Data Studio, số giây phân số tăng lên.

Ví dụ 2 - Ngày / Giờ in

Dưới đây là một ví dụ mà tôi đã chạy bằng Azure Data Studio hiển thị số giây phân số tăng dần.

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

Kết quả:

 Đã bắt đầu thực hiện truy vấn tại Dòng 4 Vòng lặp thực thi bắt đầu09:31:40.610000009:31:40.616666709:31:40.620000009:31:40.623333309:31:40.6266667 Hoàn thành thực thi hàng loạt 5 lần ... Tổng thời gian thực thi:00:00:00.022  

Ví dụ 3 - Ví dụ về Cơ sở dữ liệu

Dưới đây là một ví dụ chèn dữ liệu vào cơ sở dữ liệu.

 CREATE TABLE LoopTest (LoopTestId uniqueidentifier NOT NULL DEFAULT NEWID (), InsertDate datetime2 (7) NOT NULL DEFAULT GETDATE ()); GOINSERT LoopTest (LoopTestId, InsertDate) CÁC GIÁ TRỊ (DEFAULT, DEFAULT * FROM); ĐI 20S 

Kết quả:

 + -------------------------------------- + ------- ---------------------- + | LoopTestId | InsertDate || -------------------------------------- + -------- --------------------- || 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 | + -------------------------------------- + ----------------------------- + 

Trong trường hợp này, cả hai cột đều đang được chèn bằng DEFAULT , dẫn đến mỗi cột được điền với giá trị mặc định của nó (mà tôi cũng chỉ định). Cột đầu tiên có giá trị mặc định là NEWID() , một hàm tạo GUID. Cột thứ hai có mặc định là GETDATE() , dẫn đến ngày và giờ hiện tại.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sao lưu cơ sở dữ liệu trong SQL Server 2017

  2. 3 cách để có được ngày đầu tiên của tháng trong SQL Server

  3. DATEDIFF () so với DATEDIFF_BIG () trong SQL Server:Sự khác biệt là gì?

  4. Lưu trữ và phân tích tài liệu trên hệ thống tệp Windows với Tìm kiếm ngữ nghĩa SQL Server - Phần 2

  5. Tính số bản ghi cho mỗi ngày giữa 2 ngày