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