2009-08-26 7 views
7

SQL सर्वर में डेटा प्रकारों के लिए अच्छे आकार क्या हैं? स्तंभों को परिभाषित करते समय, मैं 50 प्रकार के आकार वाले डेटा प्रकारों को डिफ़ॉल्ट आकारों में से एक के रूप में देखता हूं (उदाहरण: nvarchar (50), बाइनरी (50))। 50 का महत्व क्या है? मैं 2 शक्तियों के आकार का उपयोग करने के लिए प्रेरित हूं, क्या यह बेहतर या सिर्फ बेकार है?SQL सर्वर में डेटा प्रकार 2 की शक्तियों के आकार होना चाहिए?

अद्यतन 1 ठीक है आपके इनपुट लोगों के लिए धन्यवाद। मैं बस एक कॉलम के लिए डेटाटाइप के आकार को परिभाषित करने का सबसे अच्छा तरीका जानना चाहता था।

उत्तर

4

कारण इतने सारे क्षेत्रों में 50 की लंबाई है सबसे डेटा प्रकार जहां लंबाई एक मुद्दा है के लिए लंबाई के रूप में 50 के लिए है कि एसक्यूएल सर्वर चूक है।

जैसा कि कहा गया है, एक फ़ील्ड की लंबाई वहां संग्रहीत डेटा के लिए उपयुक्त होनी चाहिए, कम से कम नहीं क्योंकि SQL सर्वर (यह ~ 8000 बाइट्स) में एकल रिकॉर्ड की लंबाई की सीमा है। उस सीमा से पहले उड़ना संभव है।

इसके अलावा, आपके फ़ील्ड की लंबाई को आपके दस्तावेज़ों का हिस्सा माना जा सकता है। मुझे नहीं पता कि मैं आलसी प्रोग्रामर से कितनी बार मुलाकात की है, जो दावा करते हैं कि उन्हें दस्तावेज करने की आवश्यकता नहीं है क्योंकि कोड स्वयं दस्तावेज है और फिर वे उन चीजों को करने से परेशान नहीं हैं जो कोड स्वयं दस्तावेज़िंग करेंगे।

3

उस फ़ील्ड का आकार उस डेटा के लिए उपयुक्त होना चाहिए जिसे आप वहां स्टोर करने की योजना बना रहे हैं, वैश्विक डिफ़ॉल्ट एक अच्छा विचार नहीं है।

2

यह पूरी तरह से निर्भर करता है कि आप क्या स्टोर कर रहे हैं। यदि आपको एक्स वर्णों का उपयोग x की आवश्यकता है, तो कुछ मनमाने ढंग से पूर्वनिर्धारित राशि नहीं है।

6

प्रदर्शन के लिए 2 की शक्तियों का उपयोग करने का कोई कारण नहीं है। डेटा लंबाई आकार के डेटा द्वारा निर्धारित की जानी चाहिए।

5

क्यों नहीं 2 के पारंपरिक शक्तियों, शून्य से 1 इस तरह के 255 के रूप में ...

गंभीरता से, लंबाई मैच चाहिए कि तुम क्या जरूरत है और अपने डेटा के लिए उपयुक्त है।

बाकी

कुछ भी नहीं है: कैसे ग्राहक इसे इस्तेमाल करता है,, 32 बिट शब्द सीमा को संरेखित करता है 2, जन्मदिन की शक्तियों, वृश्चिक यूरेनस, पासों का रोल में बढ़ती ...

2

यह एक अच्छा विचार है कि पूरी पंक्ति फिट बहुत अधिक खाली जगह छोड़ने के बिना पृष्ठ में कई बार।

एक पंक्ति दो पृष्ठों तक नहीं फैल सकती है, एक पृष्ठ में 8096 मुक्त स्थान बाइट है, इसलिए दो पंक्तियां जो 4049 बाइट्स लेती हैं, प्रत्येक पृष्ठ पर कब्जा कर लेती है।

docs देखें कि एक पंक्ति पर कब्जा कर लिया गया स्थान कैसे गणना करें।

भी ध्यान रखें कि VARCHAR "अलग", इसलिए यदि आप एक 50 बाइट स्तंभ में एक 1 बाइट मूल्य रखा है, इसे ले जाएगा, लेकिन 1 बाइट के लिए में VAR और VARBINARY खड़ा है।

4

आपको 2 शक्तियों का उपयोग करने से कुछ भी हासिल नहीं होगा। जब तक आपके व्यवसाय की ज़रूरतों को वास्तव में आवश्यक होने के लिए फ़ील्ड बनाएं - एसक्यूएल सर्वर बाकी को संभालने दें।

इसके अलावा, चूंकि SQL सर्वर पृष्ठ का आकार 8K तक सीमित है (जिसमें से 8060 बाइट उपयोगकर्ता डेटा के लिए उपलब्ध हैं), जिससे आपकी चर लंबाई लंबाई जितनी छोटी हो सके (लेकिन जब तक आवश्यक हो, एक आवश्यकता परिप्रेक्ष्य से) एक से अधिक।

वह 8K सीमा एक निश्चित SQL सर्वर सिस्टम सेटिंग है जिसे बदला नहीं जा सकता है।

बेशक, एसक्यूएल सर्वर इन दिनों तथाकथित "ओवरफ्लो" पृष्ठों का उपयोग करके 8K से अधिक डेटा को संभाल सकता है - लेकिन यह कम कुशल है, इसलिए 8 के भीतर रहने की कोशिश करना आम तौर पर एक अच्छा विचार है।

मार्क

संबंधित मुद्दे