【发布时间】:2011-02-23 16:51:02
【问题描述】:
我在 PostgreSQL 中使用字符变化数据类型。 我无法在 PostgreSQL 手册中找到此信息。 字符变化数据类型中字符的最大限制是多少?
【问题讨论】:
标签: database postgresql
我在 PostgreSQL 中使用字符变化数据类型。 我无法在 PostgreSQL 手册中找到此信息。 字符变化数据类型中字符的最大限制是多少?
【问题讨论】:
标签: database postgresql
参考documentation,varchar(n) 类型定义没有明确的限制。但是:
...
无论如何,最长的可能 可以存储的字符串是 大约 1 GB。 (最大值 数据类型中将允许n声明少于此。它 改变这个不会很有用 因为多字节字符 编码字符数和 无论如何,字节可能完全不同。 如果您想存储长字符串 没有具体上限,使用文字 或无长度变化的字符 说明符,而不是组成一个 任意长度限制。)
还要注意这一点:
提示:没有表现 这三种类型的区别, 除了增加存储空间 使用空白填充类型时,以及 几个额外的 CPU 周期来检查 存储时的长度 长度受限的列。尽管 字符(n)有表现 在其他一些数据库中的优势 系统,没有这样的优势 PostgreSQL;实际上字符(n)是 通常是三个中最慢的 因为它有额外的存储空间 费用。在大多数情况下,文本或 应使用字符变化 而是。
【讨论】:
无论如何,可以存储的最长的字符串大约是 1 GB。
【讨论】:
postgresql 中的字符类型
根据您的问题,我建议您使用 text 类型。该类型不需要字符长度。
另外,PostgreSQL 提供了 text 类型,可以存储任意长度的字符串。虽然类型文本不在 SQL 标准中,但其他几个 SQL 数据库管理系统也有。
来源:https://www.postgresql.org/docs/9.6/static/datatype-character.html
【讨论】:
最大字符串大小约为 1 GB。根据 postgres docs:
非常长的值也存储在后台表中,这样它们就不会干扰对较短列值的快速访问。无论如何,可以存储的最长的字符串大约是 1 GB。 (数据类型声明中允许的 n 的最大值小于该最大值。)
请注意,您可以为 varchar 指定的最大 n 小于最大存储大小。虽然这个限制可能会有所不同,但快速检查会发现 postgres 11.2 的限制是 10 MB:
psql (11.2)
=> create table varchar_test (name varchar(1073741824));
ERROR: length for type varchar cannot exceed 10485760
实际上,当您没有合理化的长度限制时,suggested 您只需使用varchar 而不指定一个。根据官方文档,
如果您希望存储没有特定上限的长字符串,请使用不带长度说明符的文本或字符变化,而不是构成任意长度限制。
【讨论】: