दिलचस्प पोस्ट
WPF पूर्वावलोकन ईवेंट क्या हैं? डेटासेट में कस्टम ऑब्जेक्ट कैसे स्टोर करें? HTML5 के साथ आईफ्रेम के लिए वैकल्पिक प्रोग्रामेटिक रूप से प्रतिक्रिया-राउटर का उपयोग करने पर नेविगेट करें कैसे एच का विकल्प पॉप्यूलेट करें: डेटाबेस से चयन करेंमेनमेन्यू? दो भिन्न सर्वर से तालिकाओं में शामिल हों एंड्रॉइड में जेसन स्ट्रिंग पार्स करने के लिए कैसे? क्या मुझे लेबल टैग के अंदर इनपुट टैग डालनी चाहिए? स्थान के लिए प्रसारण रिसीवर जावा 7 (जेडीके 7) कचरा संग्रह और जी 1 पर प्रलेखन क्यों खिड़की है। मोज़ेमडिलाओग नापसंद है? इसके बजाय क्या उपयोग करें? टूलबार के नीचे प्रदर्शित करने के लिए मैं ड्रेवरलायआउट कैसे करूं? "गलत स्ट्रिंग मान" त्रुटियाँ कैसे ठीक करें? पर्ल 5 में छद्म ऑपरेटर्स क्या हैं? हम यह निर्धारित करने के लिए कि क्या यह प्रधानमंत्री है, प्रधानमांक संख्या के वर्गमूल की जांच क्यों की जाती है?

SQL सर्वर पाठ प्रकार बनाम varchar डेटा प्रकार

मेरे पास चर लंबाई वर्ण डेटा है और SQL सर्वर (2005) डेटाबेस में स्टोर करना चाहते हैं मैं टेक्सटाइल एसक्यूएल प्रकार को चुनने के बारे में कुछ बेहतरीन अभ्यासों को सीखना चाहता हूं या वर्चारे एसक्यूएल प्रकार, प्रदर्शन / पदचिह्न / फ़ंक्शन में पेशेवर और विपक्ष चुनना चाहता हूं।

वेब के समाधान से एकत्रित समाधान "SQL सर्वर पाठ प्रकार बनाम varchar डेटा प्रकार"

यदि आप SQL Server 2005 या बाद का उपयोग कर रहे हैं, तो varchar(MAX) उपयोग करें text डेटाटाइप को नापसंद किया गया है और नए विकास कार्य के लिए उपयोग नहीं किया जाना चाहिए। डॉक्स से :

जरूरी

ntext , text , और image डेटा प्रकार Microsoft SQL सर्वर के भविष्य के संस्करण में निकाल दिए जाएंगे। इन डेटा प्रकारों को नए विकास कार्य में उपयोग करने से बचें और उन अनुप्रयोगों को संशोधित करने की योजना बनाएं जो वर्तमान में उनका उपयोग करते हैं। इसके बजाय nvarchar (अधिकतम) , varchar (अधिकतम) , और varbinary (अधिकतम) का उपयोग करें

TEXT स्ट्रिंग डेटा के बड़े टुकड़ों के लिए उपयोग किया जाता है। अगर फ़ील्ड की लंबाई एक निश्चित सीमा से अधिक हो जाती है, तो पाठ को पंक्ति से बाहर रखा जाता है

VARCHAR को हमेशा पंक्ति में रखा जाता है और उसकी 8000 वर्णों की सीमा होती है यदि आप VARCHAR(x) बनाने का प्रयास करते हैं, जहां x> 8000 , आपको एक त्रुटि मिलती है:

सर्वर: संदेश 131, स्तर 15, राज्य 3, रेखा 1

टाइप 'varchar' को दिए गए आकार () को किसी भी डेटा प्रकार (8000) के लिए अधिकतम स्वीकार्यता से अधिक है

ये लंबाई सीमाएं SQL Server 2005 में VARCHAR(MAX) चिंता नहीं करती हैं, जो कि पंक्ति के बाहर हो सकती हैं, बस TEXT तरह।

नोट करें कि MAX एक प्रकार का निरंतर नहीं है, VARCHAR और VARCHAR(MAX) बहुत अलग प्रकार के होते हैं, बाद के TEXT करीब हैं TEXT

SQL सर्वर के पूर्व संस्करणों में आप सीधे TEXT तक पहुंच नहीं सकते, आप केवल एक TEXTPTR प्राप्त कर सकते हैं और इसे READTEXT और WRITETEXT फ़ंक्शंस में उपयोग कर सकते हैं।

SQL सर्वर 2005 में आप सीधे TEXT कॉलम एक्सेस कर सकते हैं (हालांकि आपको उनके लिए एक मान निर्दिष्ट करने के लिए अभी भी स्पष्ट VARCHAR आवश्यकता है VARCHAR )।

TEXT अच्छा है:

  • यदि आपको अपने डेटाबेस में बड़े ग्रंथों को संग्रहित करने की आवश्यकता है
  • यदि आप कॉलम के मूल्य पर खोज नहीं करते हैं
  • यदि आप इस कॉलम को शायद ही कभी चुनते हैं और इसमें शामिल नहीं होते हैं।

VARCHAR अच्छा है:

  • यदि आप छोटे स्ट्रिंग्स स्टोर करते हैं
  • यदि आप स्ट्रिंग मान पर खोज करते हैं
  • अगर आप इसे हमेशा चुनते हैं या जुड़ते हैं तो इसका इस्तेमाल करते हैं।

यहां का चयन करके मेरा मतलब है कि कोई भी प्रश्न जारी करना जो कॉलम के मूल्य को वापस करता है।

यहां खोज करके मेरा मतलब है कि कोई भी प्रश्न जारी करना जिसका परिणाम TEXT या VARCHAR कॉलम के मूल्य पर निर्भर करता है। इसमें किसी भी JOIN या WHERE स्थिति में इसका उपयोग करना शामिल है।

जैसे कि TEXT को पंक्ति से बाहर रखा जाता है, TEXT कॉलम को शामिल नहीं करने वाले प्रश्न आमतौर पर तेज़ी से होते हैं।

किस TEXT का अच्छा उदाहरण है:

  • ब्लॉग टिप्पणियां
  • विकी पेज
  • कोड स्रोत

VARCHAR किस प्रकार के लिए अच्छा है:

  • उपयोगकर्ताओं के नाम
  • पृष्ठ शीर्षक
  • फ़ाइल नाम

अंगूठे के नियम के रूप में, अगर आपको कभी भी 200 अक्षरों से अधिक के लिए टेक्स्ट वैल्यू की आवश्यकता होती है और इस कॉलम में शामिल होने के लिए उपयोग नहीं करते हैं, तो टेक्स्ट का उपयोग करें।

अन्यथा VARCHAR उपयोग करें

पीएस ही UNICODE सक्षम NTEXT और NVARCHAR पर भी लागू होता है, जिसका उपयोग आपको ऊपर दिए गए उदाहरणों के लिए करना चाहिए।

पीपीएस उसी पर लागू होता है VARCHAR(MAX) और NVARCHAR(MAX) जो SQL Server NTEXT बजाय TEXT और NTEXT का उपयोग करता है यदि आप चाहते हैं कि वे large value types out of row को सक्षम करें, यदि आप चाहते हैं कि उन्हें हमेशा पंक्ति से बाहर रखा जाए

जैसा कि ऊपर और यहां बताया गया है, भावी रिलीज में TEXT को नापसंद किया जा रहा है:

text in row विकल्प text in row को SQL सर्वर के भविष्य के संस्करण में हटा दिया जाएगा। नए विकास कार्य में इस विकल्प का उपयोग करने से बचें और वर्तमान text in row उपयोग करने वाले एप्लिकेशन को संशोधित करने की योजना text in row । हम अनुशंसा करते हैं कि आप varchar(max) , nvarchar(max) , या varbinary(max) डेटा प्रकारों का उपयोग करके बड़े डेटा को संग्रहीत करते हैं इन डेटा प्रकारों के इन-पंक्ति और आउट-ऑफ-पंक्ति व्यवहार को नियंत्रित करने के लिए, large value types out of row विकल्प के large value types out of row उपयोग करें।

एसक्यूएल सर्वर 2005 में नए आंकड़ों को पेश किया गया: varchar(max) और nvarchar(max) उनके पास पुराने पाठ प्रकार के फायदे हैं: इसमें 2 जीबी डाटा के लिए ऑप्शन हो सकता है, लेकिन उनके पास varchar और nvarchar अधिकतर फायदे हैं इन फायदों में स्ट्रिंग मैनिप्युलेशन फ़ंक्शन जैसे कि उपस्ट्रिंग () का उपयोग करने की क्षमता है।

साथ ही, वर्चार (अधिकतम) को तालिका के (डिस्क / मेमोरी) स्थान में रखा जाता है जबकि आकार 8 केबी से कम है केवल जब आप क्षेत्र में अधिक डेटा डालते हैं, तो यह तालिका के स्थान से बाहर जमा हो जाता है। तालिका के अंतरिक्ष में संग्रहीत डेटा (आमतौर पर) जल्दी पुनर्प्राप्त किया गया है।

संक्षेप में, कभी भी टेक्स्ट का उपयोग न करें, क्योंकि एक बेहतर विकल्प है: (एन) varchar (अधिकतम) और केवल varchar (अधिकतम) का उपयोग करें जब एक नियमित varchar काफी बड़ा नहीं है, यानी अगर आप उस स्ट्रिंग की अपेक्षा करते हैं जो आप स्टोर करने जा रहे हैं तो 8000 अक्षरों से अधिक हो जाएंगे।

जैसा कि उल्लेख किया गया था, आप TEXT डेटाटाइप पर SUBSTRING का उपयोग कर सकते हैं, लेकिन केवल जब तक TEXT फ़ील्ड में 8000 से कम वर्ण हैं

एमएस 2008 में कुछ बड़े बदलाव हुए हैं -> किस प्रकार के डेटा प्रकार का उपयोग करने के लिए निर्णय लेने पर निम्नलिखित लेख पर विचार करना उचित होगा। http://msdn.microsoft.com/en-us/library/ms143432.aspx

प्रति बाइट्स

  1. varchar (अधिकतम), varbinary (अधिकतम), xml, पाठ या छवि कॉलम 2 ^ 31-1 2 ^ 31-1
  2. नववर्कर (अधिकतम) स्तंभ 2 ^ 30-1 2 ^ 30-1