CHAR 和 VARCHAR 和 TEXT 类型
PostgreSQL 字符串类型简介¶
PostgreSQL 提供了三种字符类型:CHAR(n)
、VARCHAR(n)
和 TEXT
,其中 n
是正整数。
类型 | 描述 |
---|---|
CHAR(n) |
定长,空白填充 |
VARCHAR(n) |
变长,有长度限制 |
TEXT |
变长,无长度限制 |
简单来说,varchar
的长度可变,而 char
的长度不可变,对于 postgresql 数据库来说 varchar
和 char
的区别仅仅在于前者是变长,而后者是定长,最大长度都是 10485760(1GB)。
varchar
不指定长度,可以存储最大长度(1GB)的字符串,而 char
不指定长度,默认则为 1,这点需要注意。
在 postgresql 数据库里边,text
和 varchar
几乎无性能差别,区别仅在于存储结构的不同。
对于 char
的使用,应该在确定字符串长度的情况下使用,否则应该选择 varchar
或者 text
。
收藏¶
这三种类型之间没有性能差别,除了当使用填充空白类型时的增加存储空间,和当存储长度约束的列时一些检查存入时长度的额外的 CPU 周期。虽然在某些其它的数据库系统里,character(n)
有一定的性能优势,但在 PostgreSQL 里没有。事实上,character(n)
通常是这三个中最慢的,因为额外存储成本。在大多数情况下,应该使用 text
或 character varying
。