मेरे पास ALTER TABLEवास्तव में बड़ी तालिका (लगभग 30 लाखों पंक्तियों) पर कमांड के बारे में एक प्रश्न है । इसका एक कॉलम एक है varchar(255)और मैं इसे आकार बदलना चाहूंगा varchar(40)। मूल रूप से, मैं निम्न कमांड चलाकर अपना कॉलम बदलना चाहूंगा:
ALTER TABLE mytable ALTER COLUMN mycolumn TYPE varchar(40);
यदि प्रक्रिया बहुत लंबी है तो मुझे कोई समस्या नहीं है लेकिन ऐसा लगता है कि मेरी तालिका ALTER TABLE कमांड के दौरान अधिक पठनीय नहीं है। क्या कोई स्मार्ट तरीका है? हो सकता है कि एक नया कॉलम जोड़ें, पुराने कॉलम से मान कॉपी करें, पुराना कॉलम ड्रॉप करें और अंत में नया नाम बदलें?
किसी भी सुराग बहुत सराहना की जाएगी! अग्रिम में धन्यवाद,
नोट: मैं PostgreSQL 9.0 का उपयोग करता हूं।
varchar(255)PostgreSQL से कहते हैं तो यह 255 बाइट्स को एक मान के लिए आवंटित नहीं करेगा जो कि वास्तविक लंबाई 40 बाइट्स है। यह 40 बाइट्स (साथ ही कुछ आंतरिक ओवरहेड) आवंटित करेगा। केवल एक चीज जो be changed by the ALTER TABLE` है, आप उस कॉलम में अधिकतम बाइट्स स्टोर कर सकते हैं जो PG से कोई त्रुटि प्राप्त किए बिना किया जा सकता है।
resizingटेबल को कम जगह नहीं मिलेगी?