猿问

使用数据类型“text”存储字符串有什么缺点吗?

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个或更少的字符,我是否应该选择textvarchar(10)?
如果我去text缺点是什么?


蛊毒传说
浏览 1302回答 3
3回答

幕布斯7119047

您提到的所有数据类型都使用相同的内部表示(比较有名)。struct varlena)这个CHAR和VARCHAR数据类型只需向其添加长度检查,并且(在CHAR),具有不同的空格填充语义。你可以用TEXT无论以上任何事情对你的逻辑都是重要的,都是安全的。

弑天下

从链接到的页面中:“这三种类型除了在使用空白填充类型时增加存储空间,以及在存储到长度受限列时需要额外的CPU周期来检查长度之外,性能没有差异。在其他数据库系统中,字符(N)具有性能优势,但PostgreSQL没有这种优势;事实上,由于存储成本增加,字符(N)通常是三种类型中最慢的。在大多数情况下,应该使用文本或字符变化。”使用textPostgres中的数据类型。但是,您应该考虑是否真的希望将大量文本存储在数据库中。把它当作varchar但是,使用更高的限制可以防止您无意中将大量数据存储在数据库中。
随时随地看视频慕课网APP
我要回答