melkij=> create table altervarchar(i int, v varchar(32));
CREATE TABLE
melkij=> insert into altervarchar select g, 'fdsfods' || g from generate_series(1,1e7) g;
INSERT 0 10000000
melkij=> create index on altervarchar (v);
CREATE INDEX
melkij=> set statement_timeout to '1s';
SET
melkij=> \timing
Секундомер включён.
melkij=> alter table altervarchar alter column v type varchar(64);
ALTER TABLE
Время: 1,530 мс
melkij=> \dt+ altervarchar
Список отношений
Схема | Имя | Тип | Владелец | Размер | Описание
------------+--------------+---------+----------+--------+----------
monitoring | altervarchar | таблица | melkij | 498 MB |
(1 строка)
Это 9.6 на HDD, за полторы мс полгигабайта не прожуют явно. Индекс как можно заметить не мешает сам по себе.
А у вас какая версия и не отличается ли чем alter table?
Сергей