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 টেবিলে পরিবর্তিত হওয়ার একমাত্র জিনিসটি হ'ল পিজি থেকে ত্রুটি না পেয়ে আপনি এই কলামে সর্বাধিক সংখ্যক বাইট সংরক্ষণ করতে পারবেন।
resizingএতে টেবিলটি কম জায়গা দখল করবে না?