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

SQL सर्वर में NEWID () बनाम NEWSEQUENTIALID ():क्या अंतर है?

SQL सर्वर में, दोनों NEWSEQUENTIALID() फ़ंक्शन और NEWID() फ़ंक्शन एक GUID (वैश्विक रूप से विशिष्ट पहचानकर्ता) बनाता है, जिसे UUID (सार्वभौमिक रूप से विशिष्ट पहचानकर्ता) के रूप में भी जाना जाता है।

एक GUID का उपयोग अद्वितीय पहचानकर्ता . प्रकार के स्तंभों में एक अद्वितीय पहचानकर्ता के रूप में किया जा सकता है , इसलिए उस उद्देश्य के लिए दोनों कार्यों का उपयोग किया जा सकता है।

हालांकि, इन दो कार्यों के बीच अंतर हैं जो एक को दूसरे पर उपयोग करने के आपके निर्णय को प्रभावित कर सकते हैं।

मतभेद

इन दो कार्यों के बीच मुख्य अंतर यहां दिए गए हैं।

<वें शैली="चौड़ाई:40%">नया () <वें शैली="चौड़ाई:40%">NEWSEQUENTIALID()
GUID एक यादृच्छिक GUID बनाता है। अनुक्रमिक GUID बनाता है।
दृष्टिकोण GUID RFC 4122 संस्करण 4 का अनुपालन करता है, जो निर्दिष्ट करता है कि GUID यादृच्छिक रूप से या छद्म-यादृच्छिक रूप से उत्पन्न होता है। एक GUID बनाता है जो कि Windows के प्रारंभ होने के बाद से किसी निर्दिष्ट कंप्यूटर पर इस फ़ंक्शन द्वारा पहले जेनरेट किए गए किसी GUID से बड़ा है। विंडोज को फिर से शुरू करने के बाद, GUID एक निचली श्रेणी से फिर से शुरू हो सकता है, लेकिन यह अभी भी विश्व स्तर पर अद्वितीय है।
रिटर्न प्रकार अद्वितीय पहचानकर्ता अद्वितीय पहचानकर्ता
उपयोग तदर्थ प्रश्नों, तालिकाओं, चर, आदि में उपयोग कर सकते हैं केवल DEFAULT के साथ उपयोग कर सकते हैं अद्वितीय पहचानकर्ता . प्रकार के तालिका स्तंभों पर बाधाएं ।
प्रदर्शन NEWSEQUENTIALID() से धीमा हो सकता है , क्योंकि NEWID() यादृच्छिक गतिविधि का कारण बनता है और कम कैश्ड डेटा पृष्ठों का उपयोग करता है। NEWID() से तेज हो सकता है , क्योंकि NEWID यादृच्छिक गतिविधि का कारण बनता है और कम कैश्ड डेटा पृष्ठों का उपयोग करता है। NEWSEQUENTIALID() का उपयोग करना डेटा और अनुक्रमणिका पृष्ठों को पूरी तरह से भरने में भी मदद करता है।
सुरक्षा अधिक सुरक्षित, क्योंकि GUID बेतरतीब ढंग से उत्पन्न होता है, और अनुमान लगाना कठिन होता है। कम सुरक्षित। अगले जेनरेट किए गए GUID के मूल्य का अनुमान लगाना संभव है और इसलिए, उस GUID से जुड़े डेटा तक पहुँच प्राप्त करें।

मुझे यकीन है कि हुड के तहत कई अन्य अंतर हैं, लेकिन ये उपयोगकर्ता के दृष्टिकोण से मुख्य अंतर हैं।

उदाहरण 1 - GUID की तुलना करना

इन कार्यों में से प्रत्येक द्वारा उत्पन्न GUID में अंतर प्रदर्शित करने के लिए यहां एक त्वरित उदाहरण दिया गया है।

CREATE TABLE GUIDTest
(
    NewIdCol uniqueidentifier NOT NULL DEFAULT NEWID(),
    NewSequentialIdCol uniqueidentifier NOT NULL DEFAULT NEWSEQUENTIALID(),
);
GO

INSERT GUIDTest (NewIdCol, NewSequentialIdCol)
VALUES (DEFAULT, DEFAULT);
GO 20

SELECT 
  NewIdCol AS [NEWID()],
  NewSequentialIdCol AS [NEWSEQUENTIALID()]
FROM GUIDTest;
GO

परिणाम:

+--------------------------------------+--------------------------------------+
| NEWID()                              | NEWSEQUENTIALID()                    |
|--------------------------------------+--------------------------------------|
| 965320de-8997-4e37-8fe9-a7daa52b04aa | 246f433e-f36b-1410-8a80-007d2b533547 |
| 5c038bef-c2e1-4558-bd91-49b98fde5c71 | 266f433e-f36b-1410-8a80-007d2b533547 |
| e7cfba90-78b6-4360-87a8-0b392fd227e5 | 286f433e-f36b-1410-8a80-007d2b533547 |
| 9bf5b052-7023-4f52-939e-b5fb8f8ea27a | 2a6f433e-f36b-1410-8a80-007d2b533547 |
| ccb38891-3689-42ed-91f2-79ddf0abeb2f | 2c6f433e-f36b-1410-8a80-007d2b533547 |
| 8646ab08-6e4b-4cd6-9b25-ec0440c0f7f3 | 2e6f433e-f36b-1410-8a80-007d2b533547 |
| f14e18a5-669a-4a2d-8793-42b705fc134f | 306f433e-f36b-1410-8a80-007d2b533547 |
| 09ec2418-cfa0-4c8b-9b08-78e6f7946488 | 326f433e-f36b-1410-8a80-007d2b533547 |
| 3ca2b71c-5f84-4db9-aa0f-fb9f215ceb09 | 346f433e-f36b-1410-8a80-007d2b533547 |
| ccaed0a6-5851-472d-8b6a-db29581f2a43 | 366f433e-f36b-1410-8a80-007d2b533547 |
| be6f9d97-7c86-4e43-9127-1aaa0c75d8b5 | 386f433e-f36b-1410-8a80-007d2b533547 |
| b4c7b9e9-6f0c-44fc-904b-1aae2dfd20f9 | 3a6f433e-f36b-1410-8a80-007d2b533547 |
| 378b2be8-b368-462f-ad30-896b67974b11 | 3c6f433e-f36b-1410-8a80-007d2b533547 |
| 390c58ce-8d5c-454b-8c80-e0a690f113b9 | 3e6f433e-f36b-1410-8a80-007d2b533547 |
| 4d2d9c64-bf04-44d2-bee3-4a2a33da05bd | 406f433e-f36b-1410-8a80-007d2b533547 |
| 87e73722-bc1c-43f1-b94d-c89053bdc408 | 426f433e-f36b-1410-8a80-007d2b533547 |
| 2caf72a0-4a19-4743-b299-99610d44aab2 | 446f433e-f36b-1410-8a80-007d2b533547 |
| 3ed0dd28-19d5-44f5-90dc-6ded08269b37 | 466f433e-f36b-1410-8a80-007d2b533547 |
| ce768fd8-df02-4d8f-afd4-a62d04571713 | 486f433e-f36b-1410-8a80-007d2b533547 |
| 6ca41865-bbee-418a-aa6d-582a4541119d | 4a6f433e-f36b-1410-8a80-007d2b533547 |
+--------------------------------------+--------------------------------------+

हम देख सकते हैं कि NEWSEQUENTIALID() कॉलम क्रमिक रूप से बढ़ रहा है, जबकि NEWID() कॉलम यादृच्छिक प्रतीत होता है।

दोनों स्तंभों में GUID हैं और वे मान्य हैं अद्वितीय पहचानकर्ता प्रकार।

NEWID() . पर कॉलम, हम देख सकते हैं कि सभी मान RFC 4122 संस्करण/(उप-प्रकार) 4 हैं, जो निर्दिष्ट करता है कि GUID यादृच्छिक रूप से या छद्म-यादृच्छिक रूप से उत्पन्न होता है। हम जानते हैं कि यह संस्करण 4 है क्योंकि 4 प्रासंगिक स्थान पर है (सभी पंक्तियों का रूप है: xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx )

उदाहरण 2 - प्रश्नों में उपयोग

जैसा कि बताया गया है, केवल NEWID() प्रश्नों में उपयोग किया जा सकता है।

उदाहरण के लिए, आप यह कर सकते हैं:

SELECT NEWID() AS [NEWID()];

परिणाम:

+--------------------------------------+
| NEWID()                              |
|--------------------------------------|
| ba07340c-6308-44d0-8c4b-52ed5e4a1601 |
+--------------------------------------+

लेकिन आप ऐसा नहीं कर सकते:

SELECT NEWSEQUENTIALID() AS [NEWSEQUENTIALID()];

परिणाम:

Msg 302, Level 16, State 0, Line 1
The newsequentialid() built-in function can only be used in a DEFAULT expression for a column of type 'uniqueidentifier' in a CREATE TABLE or ALTER TABLE statement. It cannot be combined with other operators to form a complex scalar expression.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं स्थापित SQL सर्वर इंस्टेंस और उनके संस्करण कैसे निर्धारित कर सकता हूं?

  2. फोन के लिए एसक्यूएल वर्कर (लंबाई) में मुझे दुनिया भर में सबसे लंबे समय तक संभावित फोन नंबर पर विचार करना चाहिए

  3. एक वर्चर डेटा प्रकार को डेटाटाइम डेटा प्रकार में बदलने के परिणामस्वरूप एक आउट-ऑफ-रेंज मान होता है

  4. अपने SQL सर्वर मॉनिटरिंग स्वामित्व की कुल लागत की गणना करें

  5. वीएस2012 में स्थानीय डीबी से कनेक्ट करने में असमर्थ - SQL सर्वर से कनेक्शन स्थापित करते समय नेटवर्क से संबंधित या इंस्टेंस-विशिष्ट त्रुटि उत्पन्न हुई ...