Tôi có một câu hỏi về ALTER TABLE
lệnh trên một bảng thực sự lớn (gần 30 triệu hàng). Một trong những cột của nó là a varchar(255)
và tôi muốn thay đổi kích thước của nó thành a varchar(40)
. Về cơ bản, tôi muốn thay đổi cột của mình bằng cách chạy lệnh sau:
ALTER TABLE mytable ALTER COLUMN mycolumn TYPE varchar(40);
Tôi không có vấn đề gì nếu quá trình này rất dài nhưng có vẻ như bảng của tôi không thể đọc được nhiều hơn trong lệnh ALTER TABLE. Có cách nào thông minh hơn không? Có thể thêm một cột mới, sao chép các giá trị từ cột cũ, bỏ cột cũ và cuối cùng đổi tên cột mới?
Bất kỳ đầu mối sẽ được đánh giá rất cao! Cảm ơn trước,
Lưu ý: Tôi sử dụng PostgreSQL 9.0.
varchar(255)
với PostgreSQL thì nó sẽ không phân bổ 255 byte cho một giá trị có độ dài thực là 40 byte. Nó sẽ phân bổ 40 byte (cộng với một số chi phí nội bộ). Điều duy nhất sẽ be changed by the
THAY ĐỔI TABLE` là số byte tối đa bạn có thể lưu trữ trong cột đó mà không gặp lỗi từ PG.
resizing
sẽ không làm cho bảng chiếm ít không gian hơn?