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
का उपयोग करें विकल्प।