ฉันมีคำถามเกี่ยวกับ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
แก้ไข TABLE` คือจำนวนไบต์สูงสุดที่คุณสามารถเก็บไว้ในคอลัมน์นั้นโดยไม่ได้รับข้อผิดพลาดจาก PG
resizing
จะไม่ทำให้ตารางใช้พื้นที่น้อยลง?