У мене питання щодо ALTER TABLE
команди на дійсно великій таблиці (майже 30 мільйонів рядків). Один з його стовпців - це "a", varchar(255)
і я хотів би змінити його розмір до "a" 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
АЛЬТЕР ТАБЛИЦЯ - це максимальна кількість байтів, які ви можете зберігати в цьому стовпці, не отримуючи помилки від PG.
resizing
це не змусить стіл займати менше місця?