postgresql 9.2中varchar(n)的最大长度是多少,哪个最好使用varchar(n)或text?

KRI*_*HNA 41 sql postgresql-9.2

您好我使用postgresql 9.2,我想使用varchar(n)来存储一些长字符串,但我不知道varchar(n)支持的字符的最大长度.哪一个更好用,你能建议我吗?谢谢

cow*_*ert 43

tl; dr:1 GB(每个字符(实际上:代码点)可以由1个或多个字节表示,具体取决于它们在unicode平面上的位置 - 假设是UTF-8编码的数据库).现在,您应该始终text在Postgresql中使用数据类型作为任意长度的字符数据.

说明: varchar(n)text使用相同的后端存储类型(varlena):具有32位长度计数器的可变长度字节数组.对于索引行为text甚至可能具有一些性能优势.Postgres的最佳实践是将text类型用于新开发; varchar(n)仍然是出于SQL标准支持的原因.注意:( varchar()带空括号)是Postgres特定的别名text.

另见:http: //www.postgresql.org/about/


Dai*_*Dai 18

根据官方文件(http://www.postgresql.org/docs/9.2/static/datatype-character.html):

在任何情况下,可存储的最长字符串大约为1 GB.(数据类型声明中n允许的最大值小于此值.更改此值没有用,因为使用多字节字符编码时,字符数和字节数可能会大不相同.如果您希望存储没有特定上限的长字符串,使用不带长度说明符的文本或字符变化,而不是构成任意长度限制.)

在线搜索显示允许的最大值取决于安装和编译选项,一些用户报告最多10485760字符(精确10MiB,假设每字符固定编码1字节).

通过"安装和编译选项"我的意思是你总是可以自己从源代码构建PostgreSQL,在编译PostgreSQL以创建自己的数据库服务器之前,你可以配置它如何存储文本来改变你可以存储的最大数量 - 但是如果你这样做的话这意味着如果您尝试将数据库文件与"正常",非自定义的PostgreSQL构建一起使用,则可能会遇到麻烦.

  • 谢谢你的反应如此之快.但是请你解释一下,"取决于安装和编译选项"是什么意思 (2认同)