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

संख्यात्मक (38,0) प्राथमिक कुंजी कॉलम के रूप में; अच्छा, बुरा, कौन परवाह करता है?

ठीक है, आप हैं उन नंबरों को संग्रहीत करने के लिए अधिक डेटा खर्च करना, जिन तक आप वास्तव में कभी नहीं पहुंच पाएंगे।

8 बाइट्स में bigint बढ़कर 9,223,372,036,854,775,807 हो जाता है

int 4 बाइट्स में 2,147,483,647 हो जाता है

एक NUMERIC(38,0) लेने वाला है, अगर मैं सही गणित कर रहा हूँ, तो 17 बाइट्स।

बहुत बड़ा अंतर नहीं है, लेकिन:छोटे डेटाटाइप =मेमोरी में अधिक पंक्तियाँ (या समान # पंक्तियों के लिए कम पृष्ठ) =लुकअप करने के लिए कम डिस्क I/O (या तो अनुक्रमित या डेटा पृष्ठ चाहता है)। प्रतिकृति, लॉग पेज आदि के लिए भी यही होता है।

SQL सर्वर के लिए:INT एक IEEE मानक है और इसलिए CPU के लिए तुलना करना आसान है, इसलिए आपको INT बनाम NUMERIC (जो एक पैक दशमलव प्रारूप है) का उपयोग करके थोड़ा सा प्रदर्शन वृद्धि मिलती है। (ओरेकल में ध्यान दें, यदि वर्तमान संस्करण उन पुराने संस्करणों से मेल खाता है जिन पर मैं बड़ा हुआ हूं, तो सभी डेटाटाइप पैक किए गए हैं, इसलिए एक INT अंदर एक NUMERIC ( x, 0) जैसा ही है, इसलिए कोई प्रदर्शन अंतर नहीं है)

तो, चीजों की भव्य योजना में - यदि आपके पास बहुत सारी डिस्क, रैम और अतिरिक्त I/O है, तो आप जो भी डेटाटाइप चाहते हैं उसका उपयोग करें। यदि आप थोड़ा और प्रदर्शन प्राप्त करना चाहते हैं, तो थोड़ा अधिक रूढ़िवादी बनें।

अन्यथा इस बिंदु पर, मैं इसे वैसे ही छोड़ दूंगा। चीजों को बदलने की जरूरत नहीं है।



  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 सर्वर 2005 में अप्सर्ट (अपडेट या इंसर्ट) कैसे करें?

  2. मौजूद होने पर SQLBulkCopy डालने या अपडेट करने का कोई तरीका?

  3. एसक्यूएल क्वेरी दो तालिकाओं से मेल न खाने वाले रिकॉर्ड प्राप्त करने में मदद करती है

  4. SQL सर्वर में @@ SERVICENAME क्या है?

  5. SQL सर्वर में XML को टेक्स्ट कास्ट करने में असमर्थ