sql server - बड़ी तालिका में वचरर कॉलम के आकार को बढ़ाने पर कोई समस्या हो सकती है?




sql-server sql-server-2008 (4)

कॉलम से वर्चर (अधिकतम) में कनवर्ट करने से बचने का एक और कारण यह है कि आप वर्चर (अधिकतम) कॉलम पर इंडेक्स नहीं बना सकते हैं।

मैं SQL सर्वर 2008 का उपयोग कर रहा हूं और मुझे लगभग 500k पंक्तियों वाली तालिका में (200 से 1200) तक एक VARCHAR फ़ील्ड बड़ा करने की आवश्यकता है। मुझे यह जानने की ज़रूरत है कि क्या कोई समस्या है जिसे मैंने नहीं माना है।

मैं इस टीएसक्यूएल कथन का उपयोग करूँगा:

ALTER TABLE MyTable
ALTER COLUMN [MyColumn] VARCHAR(1200)

मैंने पहले से ही डेटा की एक प्रति पर कोशिश की है और इस कथन का कोई बुरा प्रभाव नहीं था जिसे मैं देख सकता था।

तो क्या ऐसा करने से कोई संभावित समस्या है जिसे मैंने नहीं माना होगा?

वैसे, कॉलम अनुक्रमित नहीं है।


बस मेरे 2 सेंट जोड़ना चाहता था, क्योंकि मैंने इस सवाल को गोगल किया था बी / सी मैंने खुद को इसी तरह की स्थिति में पाया ...

सावधान रहें कि varchar(xxx) से varchar(yyy) में बदलते समय वास्तव में मेटा-डेटा परिवर्तन होता है, लेकिन varchar(max) में बदलना नहीं है। क्योंकि varchar(max) मान (उर्फ BLOB मान - छवि / टेक्स्ट इत्यादि) डिस्क पर अलग-अलग संग्रहीत होते हैं, तालिका पंक्ति में नहीं, बल्कि "पंक्ति से बाहर"। तो सर्वर एक बड़ी मेज पर पागल हो जाएगा और मिनटों (घंटे) के लिए उत्तरदायी बन जाएगा।

--no downtime
ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(1200)

--huge downtime
ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(max)

पुनश्च। यह nvarchar या पाठ्यक्रम पर लागू होता है।


यह केवल मेटाडाटा परिवर्तन है: यह तेज़ है।

एक अवलोकन: एसईटी ANSI_xx सेटिंग्स में से एक अलग हैं उदाहरण के लिए "दुर्घटनाओं" से बचने के लिए स्पष्ट रूप से पूर्ण या नहीं पूर्ण निर्दिष्ट करें उदाहरण के लिए ओएसक्ल में चलाएं किसी कारण से एसएसएमएस नहीं


वर्चर (200) से वर्चर (1200) में बदलना आपको कोई मुद्दा नहीं लेना चाहिए क्योंकि यह केवल मेटाडाटा परिवर्तन है और चूंकि SQL सर्वर 2008 अत्यधिक रिक्त स्थान को छोटा करता है, आपको कोई प्रदर्शन अंतर नहीं दिखाना चाहिए, इसलिए संक्षेप में वहां कोई समस्या नहीं होनी चाहिए परिवर्तन।





alter-column