我正在设计一个数据库,由于对数据类型还不太熟悉,所以想了解以下问题:
如果我不关心字符向量的长度,是否适合使用VARCHAR
?(即使字符串预计很短?)
到目前为止,当我需要存储非常长的字符串时,我一直在使用TEXT
(VARCHAR
),但是阅读文档并询问周围的人后,我听说PostgreSQL如果提供了最大长度并且存储的字符串长度小于它,则不会存储额外的字节。
我猜最大长度是用于远程设备无法承担大内存空间的情况下使用的。你同意这个解释吗?
我正在设计一个数据库,由于对数据类型还不太熟悉,所以想了解以下问题:
如果我不关心字符向量的长度,是否适合使用VARCHAR
?(即使字符串预计很短?)
到目前为止,当我需要存储非常长的字符串时,我一直在使用TEXT
(VARCHAR
),但是阅读文档并询问周围的人后,我听说PostgreSQL如果提供了最大长度并且存储的字符串长度小于它,则不会存储额外的字节。
我猜最大长度是用于远程设备无法承担大内存空间的情况下使用的。你同意这个解释吗?
从文档中得知:
除了使用空白填充类型时增加存储空间和在存储到长度约束列时需要几个额外的CPU周期来检查长度之外,这三种类型之间没有性能差异。虽然在一些其他数据库系统中,character(n)具有性能优势,但PostgreSQL中没有这样的优势;事实上,由于其额外的存储成本,character(n)通常是三者中最慢的。在大多数情况下,应改用text或character varying。