首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用数据类型"text“存储字符串有什么缺点吗?

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

Stack Overflow用户
提问于 2013-12-02 11:12:37
回答 2查看 18K关注 0票数 32

根据PostgreSQL文档,它们支持字符数据的3种数据类型:

代码语言:javascript
复制
character varying(n), varchar(n)  variable-length with limit
character(n), char(n)             fixed-length, blank padded
text                              variable unlimited length

在我的应用程序中,我遇到了一些令人不快的场景,其中insert/update查询失败,因为要插入的文本超出了varchar(n)char(n)限制。

对于这种情况,将此类列的数据类型更改为text就足够了。

我的问题是:

  • 如果我们将每个字符存储列的数据类型概括并更改为text,那么性能/内存是否会有任何下降?
  • 如果数据类型为text的列每次存储10个或10个以上字符,我应该选择text还是varchar(10)
  • 如果我选择text,有什么坏处?
EN

回答 2

Stack Overflow用户

发布于 2013-12-02 11:21:30

您提到的所有数据类型都使用相同的内部表示(中等著名的struct varlena)

CHARVARCHAR数据类型只是添加长度检查,并且(在CHAR情况下)具有不同的空格填充语义。

您可以在上述任何对您的逻辑都不重要的地方安全地使用TEXT

票数 6
EN

Stack Overflow用户

发布于 2013-12-02 11:24:02

从链接到的页面中:

“这三种类型之间没有性能差异,除了使用空白填充类型时增加存储空间,以及在存储到长度受限列时需要额外的CPU周期来检查长度。在其他数据库系统中,字符(N)具有性能优势,但在PostgreSQL中没有这种优势;事实上,由于存储成本增加,字符(N)通常是三种类型中最慢的。在大多数情况下,应该使用文本或字符变化。”

在Postgres中使用text数据类型似乎没有任何缺点。

但是,您应该考虑是否真的希望将大量文本存储在数据库中。将其保持为varchar,但限制较高,可以防止您无意中将大量数据存储在数据库中。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20326892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档