का उपयोग करके VARCHAR(MAX)
आप मूल रूप से SQL सर्वर को बता रहे हैं "इस क्षेत्र में मूल्यों को संग्रहीत करें कि आप सबसे अच्छा कैसे देखते हैं", SQL सर्वर तब चुनेंगे कि मूल्यों को एक नियमित VARCHAR
रूप से या एक एलओबी (बड़ी वस्तु) के रूप में संग्रहीत करना है या नहीं। सामान्य तौर पर यदि स्टोर किए गए मान 8,000 बाइट्स से कम हैं तो SQL सर्वर मूल्यों को एक नियमित VARCHAR
प्रकार के रूप में मानेगा।
यदि संग्रहीत किए गए मान बहुत बड़े हैं, तो कॉलम को LOB पृष्ठों में पृष्ठ से बाहर जाने की अनुमति है, ठीक उसी तरह जैसे वे अन्य LOB प्रकारों ( text
, ntext
और image
) के लिए करते हैं - यदि ऐसा होता है, तो संग्रहीत डेटा को पढ़ने के लिए अतिरिक्त पृष्ठ रीड की आवश्यकता होती है अतिरिक्त पृष्ठों (यानी वहाँ एक प्रदर्शन penatly है), लेकिन यह केवल होता है अगर मान संग्रहीत बहुत बड़ी हैं ।
वास्तव में SQL सर्वर 2008 या बाद के डेटा के तहत निश्चित लंबाई डेटा प्रकारों (जैसे VARCHAR(3,000)
) के साथ भी अतिरिक्त पृष्ठों पर अतिप्रवाह हो सकता है , हालांकि इन पृष्ठों को पंक्ति अतिप्रवाह डेटा पृष्ठ कहा जाता है और थोड़ा अलग तरीके से व्यवहार किया जाता है।
लघु संस्करण: भंडारण के दृष्टिकोण VARCHAR(MAX)
से VARCHAR(N)
कुछ के लिए उपयोग करने का कोई नुकसान नहीं है N
।
(ध्यान दें कि यह अन्य चर-लंबाई फ़ील्ड प्रकारों पर भी लागू होता है ) NVARCHAR
औरVARBINARY
FYI करें - आप स्तंभों पर अनुक्रमित नहीं बना सकतेVARCHAR(MAX)