PostgreSQL: TEXTとVARCHARの違い
PostgreSQLのTEXT型とVARCHAR型の違いは、文字数を指定できるかどうか程度
その他はほぼ同じと考えてよいらしい
主キーには、なるべく文字数制限をつけたい
TEXT型にして非常に大きい文字列が大量に追加されると、パフォーマンス上の問題になりやすい
どちらも最大サイズは1GB
参考:【PostgreSQL】textとvarchar(character varying)の違い | PostgresWeb - ポスグレウェブ