按Postgres文件,它们支持字符数据的3种数据类型:character varying(n), varchar(n) variable-length with limit
character(n), char(n) fixed-length, blank padded
text variable unlimited length在我的应用程序中,我遇到了一些令人不快的场景,其中插入/更新查询失败,因为要插入的文本超出了varchar(n)或char(n)限制。对于这种情况,将这些列的数据类型更改为text就够了。我的问题是:如果我们将每个字符存储列的数据类型概括并更改为text,在性能/内存方面有什么缺点吗?如果具有数据类型的列text每次存储10个或更少的字符,我是否应该选择text或varchar(10)?如果我去text缺点是什么?
3 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
struct varlena
)
CHAR
VARCHAR
CHAR
TEXT
弑天下
TA贡献1818条经验 获得超8个赞
“这三种类型除了在使用空白填充类型时增加存储空间,以及在存储到长度受限列时需要额外的CPU周期来检查长度之外,性能没有差异。在其他数据库系统中,字符(N)具有性能优势,但PostgreSQL没有这种优势;事实上,由于存储成本增加,字符(N)通常是三种类型中最慢的。在大多数情况下,应该使用文本或字符变化。”
text
varchar
添加回答
举报
0/150
提交
取消