TEXT स्ट्रिंग डेटा के बड़े टुकड़ों के लिए उपयोग किया जाता है। यदि फ़ील्ड की लंबाई एक निश्चित सीमा से अधिक है, तो टेक्स्ट को पंक्ति से बाहर संग्रहीत किया जाता है।
VARCHAR हमेशा पंक्ति में संग्रहीत किया जाता है और इसकी सीमा 8000 . है पात्र। अगर आप VARCHAR(x) . बनाने की कोशिश करते हैं , जहां x> 8000 , आपको एक त्रुटि मिलती है:
सर्वर:संदेश 131, स्तर 15, राज्य 3, पंक्ति 1
'वर्चर' प्रकार को दिया गया आकार () किसी भी डेटा प्रकार (8000) के लिए अनुमत अधिकतम से अधिक है
ये लंबाई सीमाएं VARCHAR(MAX) . से संबंधित नहीं हैं में एसक्यूएल सर्वर 2005 , जिसे पंक्ति से बाहर संग्रहीत किया जा सकता है, जैसे TEXT ।
ध्यान दें कि MAX यहाँ एक प्रकार का स्थिरांक नहीं है, VARCHAR और VARCHAR(MAX) बहुत अलग प्रकार हैं, बाद वाले TEXT . के बहुत करीब हैं ।
SQL सर्वर . के पुराने संस्करणों में आप TEXT . तक नहीं पहुंच सके सीधे, आप केवल एक TEXTPTR प्राप्त कर सकते हैं और इसका उपयोग READTEXT . में करें और WRITETEXT कार्य।
एसक्यूएल सर्वर 2005 . में आप सीधे TEXT . तक पहुंच सकते हैं कॉलम (हालांकि आपको अभी भी VARCHAR . के लिए एक स्पष्ट कलाकार की आवश्यकता है उनके लिए एक मान निर्दिष्ट करने के लिए)।
TEXT अच्छा है:
- यदि आपको अपने डेटाबेस में बड़े टेक्स्ट स्टोर करने की आवश्यकता है
- यदि आप कॉलम के मूल्य पर खोज नहीं करते हैं
- यदि आप शायद ही कभी इस कॉलम का चयन करते हैं और इसमें शामिल नहीं होते हैं।
VARCHAR अच्छा है:
- यदि आप छोटे तार जमा करते हैं
- यदि आप स्ट्रिंग मान पर खोज करते हैं
- यदि आप इसे हमेशा चुनते हैं या इसे जॉइन में उपयोग करते हैं।
चुनकर यहां मेरा मतलब है कि कॉलम के मूल्य को वापस करने वाले किसी भी प्रश्न को जारी करना।
खोज . द्वारा यहाँ मेरा मतलब किसी भी प्रश्न को जारी करना है जिसका परिणाम TEXT . के मूल्य पर निर्भर करता है या VARCHAR कॉलम। इसमें किसी भी JOIN . में इसका उपयोग करना शामिल है या WHERE हालत।
TEXT के रूप में पंक्ति से बाहर संग्रहीत किया जाता है, जिन प्रश्नों में TEXT . शामिल नहीं है कॉलम आमतौर पर तेज़ होते हैं।
TEXT . के कुछ उदाहरण इसके लिए अच्छा है:
- ब्लॉग टिप्पणियाँ
- विकी पृष्ठ
- कोड स्रोत
क्या के कुछ उदाहरण VARCHAR इसके लिए अच्छा है:
- उपयोगकर्ता नाम
- पृष्ठ शीर्षक
- फ़ाइल नाम
एक सामान्य नियम के रूप में, यदि आप चाहते हैं कि आपका टेक्स्ट मान 200 . से अधिक हो वर्ण और इस कॉलम में शामिल होने का उपयोग न करें, TEXT . का उपयोग करें ।
अन्यथा VARCHAR . का उपयोग करें ।
पी.एस. वही UNICODE . पर लागू होता है सक्षम NTEXT और NVARCHAR साथ ही, जिसका आपको ऊपर के उदाहरणों के लिए उपयोग करना चाहिए।
पी.पी.एस. वही VARCHAR(MAX) . पर लागू होता है और NVARCHAR(MAX) कि एसक्यूएल सर्वर 2005+ TEXT . के बजाय उपयोग करता है और NTEXT . आपको large value types out of row सक्षम करने की आवश्यकता होगी उनके लिए sp_tableoption . के साथ यदि आप चाहते हैं कि उन्हें हमेशा पंक्ति से बाहर रखा जाए।
जैसा कि ऊपर बताया गया है और यहां , TEXT भविष्य की रिलीज़ में पदावनत होने जा रहा है:
text in row SQL सर्वर के भविष्य के संस्करण में विकल्प हटा दिया जाएगा . नए विकास कार्य में इस विकल्प का उपयोग करने से बचें, और उन अनुप्रयोगों को संशोधित करने की योजना बनाएं जो वर्तमान में text in row का उपयोग करते हैं . हम अनुशंसा करते हैं कि आप varchar(max) . का उपयोग करके बड़े डेटा को स्टोर करें , nvarchar(max) , या varbinary(max) डेटा के प्रकार। इन डेटा प्रकारों के इन-रो और आउट-ऑफ़-रो व्यवहार को नियंत्रित करने के लिए, large value types out of row का उपयोग करें विकल्प।