У меня вопрос по поводу 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
ALTER TABLE`, - это максимальное количество байтов, которое вы можете сохранить в этом столбце, не получая ошибки от PG.
resizing
не заставит столик занимать меньше места?