Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में एक ही क्वेरी को कई बार चलाने का सबसे तेज़ तरीका

SQL सर्वर का उपयोग करने वाले अधिकांश लोग GO adding जोड़ने की परंपरा के बारे में जानते हैं टी-एसक्यूएल स्टेटमेंट के प्रत्येक बैच के अंत तक। लेकिन शायद कम आम तौर पर जाना जाता है, यह है कि आप GO . के बाद एक पूर्णांक भी जोड़ सकते हैं यह निर्दिष्ट करने के लिए कि बैच कितनी बार चलना चाहिए।

उदाहरण 1 - मूल उपयोग

यह कैसे काम करता है इसका एक उदाहरण यहां दिया गया है।

SELECT GETDATE() AS DateTime;
GO 3

परिणाम:

+-------------------------+
| DateTime                |
|-------------------------|
| 2020-01-08 09:26:31.663 |
+-------------------------+
Beginning execution loop
+-------------------------+
| DateTime                |
|-------------------------|
| 2020-01-08 09:26:31.663 |
+-------------------------+
Beginning execution loop
+-------------------------+
| DateTime                |
|-------------------------|
| 2020-01-08 09:26:31.663 |
+-------------------------+
Beginning execution loop
Time: 0.578s

मैंने GO 3 . निर्दिष्ट किया है जिसके परिणामस्वरूप क्वेरी तीन बार चल रही थी। हर बार क्वेरी चलने पर मुझे "शुरुआती निष्पादन लूप" शब्द भी मिलते हैं।

मुझे इस क्वेरी के लिए अलग-अलग परिणाम मिलते हैं, इस पर निर्भर करता है कि मैं किस टूल का उपयोग क्वेरी को चलाने के लिए करता था। mssql-cli . का उपयोग करते समय मुझे ये परिणाम मिले हैं कमांड लाइन उपकरण। भिन्नात्मक सेकंड सभी समान हैं। लेकिन जब मैंने Azure डेटा स्टूडियो का उपयोग किया, तो आंशिक सेकंड बढ़ गए।

उदाहरण 2 - प्रिंट करने की तारीख/समय

यहां एक उदाहरण दिया गया है कि मैंने Azure डेटा स्टूडियो का उपयोग करके आंशिक सेकंड को बढ़ाते हुए दिखाया।

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

परिणाम:

Started executing query at Line 4
Beginning execution loop
09:31:40.6100000
09:31:40.6166667
09:31:40.6200000
09:31:40.6233333
09:31:40.6266667
Batch execution completed 5 times...
Total execution time: 00:00:00.022

उदाहरण 3 - एक डेटाबेस उदाहरण

यहां एक उदाहरण दिया गया है जो डेटा को डेटाबेस में सम्मिलित करता है।

CREATE TABLE LoopTest
(
    LoopTestId uniqueidentifier NOT NULL DEFAULT NEWID(),
    InsertDate datetime2(7) NOT NULL DEFAULT GETDATE()
);
GO

INSERT LoopTest (LoopTestId, InsertDate)
VALUES (DEFAULT, DEFAULT);
GO 20

SELECT *
FROM LoopTest;
GO

परिणाम:

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

इस स्थिति में, दोनों कॉलम 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. एमएस एसक्यूएल सर्वर 2017 मानक में विफलता लागू करना

  2. SQL सर्वर पूर्णांक को बाइनरी स्ट्रिंग में बदलें

  3. पैरामीटरयुक्त क्वेरी ..... पैरामीटर '@units' की अपेक्षा करता है, जो आपूर्ति नहीं की गई थी

  4. SQL सर्वर में एक स्ट्रिंग और एक संख्या को जोड़ने के 6 तरीके

  5. पीडीओ ओडीबीसी के माध्यम से पीएचपी को एमएसएसक्यूएल से कनेक्ट करें