La respuesta es no .
No agregue un modificador de longitud varcharsi puede evitarlo. La mayoría de las veces, en realidad no necesita una restricción de longitud. Solo utilícelo textpara todos los datos de los personajes. Haga eso varchar(sin modificador de longitud) si necesita mantenerse compatible con RDBMS que no tiene text.
El rendimiento es casi el mismo: textes un poco más rápido en situaciones excepcionales y guarda los ciclos para verificar la longitud.
Si realmente necesita imponer una longitud máxima, aún use texty agregue una restricción de verificación para eso:
ALTER TABLE tbl ADD CONSTRAINT tbl_col_len CHECK (length(col) < 51);
Puede modificar o eliminar dicha restricción en cualquier momento sin tener que meterse con la definición de la tabla y todos los objetos dependientes (vistas, funciones, teclas foráneas, ...)
Con los modificadores de longitud simplemente te encuentras con problemas como este o esto o esto ...
PostgreSQL 9.1 introdujo una nueva característica para aliviar un poco el dolor. Cito las notas de la versión aquí :
Permitir ALTER TABLE ... SET DATA TYPEevitar reescrituras de tablas en casos apropiados (Noah Misch, Robert Haas)
Por ejemplo, convertir una varcharcolumna en texto ya no requiere una reescritura de la tabla. Sin embargo, aumentar la restricción de longitud en una
varcharcolumna aún requiere una reescritura de la tabla.