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

डेटाबेस डिजाइन में प्राथमिक कुंजी के रूप में विशिष्ट पहचानकर्ता (गाइड)

एक 128-बिट GUID (uniqueidentifier ) कुंजी निश्चित रूप से 32-बिट int . से 4x बड़ी है चाबी। हालांकि, कुछ प्रमुख लाभ हैं:

  • सामग्री मर्ज करते समय कोई "पहचान सम्मिलित" समस्या नहीं
  • यदि आप NEWSEQUENTIALID() के बजाय COMB मान का उपयोग करते हैं, तो आपको एक "मुफ़्त" INSERT टाइमस्टैम्प मिलता है। आप SELECT . भी कर सकते हैं यदि आप कुछ फैंसी CAST() . के साथ चाहते हैं तो दिनांक/समय सीमा के आधार पर प्राथमिक कुंजी से कॉल.
  • वे विश्व स्तर पर अद्वितीय हैं, जो समय-समय पर बहुत उपयोगी साबित होते हैं।
  • चूंकि उच्च-जल चिह्नों को ट्रैक करने की कोई आवश्यकता नहीं है, इसलिए आपकी BL परत SQL सर्वर के बजाय मान निर्दिष्ट कर सकती है, इस प्रकार SELECT scope_identity() के चरण को समाप्त कर सकती है। डालने के बाद प्राथमिक कुंजी प्राप्त करने के लिए।
  • यदि यह दूर से भी संभव है कि आपके पास 2 बिलियन से अधिक रिकॉर्ड हो सकते हैं, तो आपको bigint का उपयोग करना होगा (64 बिट्स) के बजाय int . एक बार जब आप ऐसा कर लेते हैं, तो uniqueidentifier bigint . से केवल दोगुना बड़ा है ।
  • GUIDs का उपयोग करने से URL आदि में कुंजियों को प्रकट करना सुरक्षित हो जाता है, बिना "अनुमान-द-आईडी" हमलों के लिए खुद को उजागर किए बिना।
  • डिस्क से SQL सर्वर पृष्ठों को कैसे लोड करता है और कैसे प्रोसेसर अब ज्यादातर 64-बिट हैं, इसके बीच, सिर्फ इसलिए कि एक संख्या 32 के बजाय 128 बिट्स है, इसका मतलब यह नहीं है कि तुलना करने में 4x अधिक समय लगता है। पिछले परीक्षण में मैंने देखा कि GUID लगभग उतने ही तेज़ हैं।
  • इंडेक्स का आकार कितने पर निर्भर करता है कॉलम शामिल हैं। हालांकि GUID स्वयं बड़े हैं, अतिरिक्त 8 या 12 बाइट्स अनुक्रमणिका के अन्य स्तंभों की तुलना में महत्वहीन हो सकते हैं।

अंत में, पूर्णांकों का उपयोग करके कुछ छोटे प्रदर्शन लाभ को निचोड़ना GUID के लाभों को खोने के लायक नहीं हो सकता है। अनुभवजन्य रूप से इसका परीक्षण करें और स्वयं निर्णय लें।

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. STRING_AGG में DISTINCT मान उत्पन्न करें

  2. एसक्यूएलसीएमडी का उपयोग कर एसक्यूएल सर्वर से सीएसवी प्रारूप के रूप में डेटा कैसे निर्यात करें?

  3. SQL सर्वर में GUI का उपयोग करके तालिका कैसे बनाएं - SQL सर्वर / T-SQL ट्यूटोरियल भाग 37

  4. SQL सर्वर हमेशा उपलब्धता समूह पर:स्थापना और कॉन्फ़िगरेशन। भाग 2

  5. SQL सर्वर GROUP_CONCAT के समतुल्य ()