Fol*_*ord 15 postgresql varchar primary-key
主键列长度的限制是多少?我将使用varchar作为主键.我发现没有信息,它可以多长时间,因为PostgreSQL在用作主键时不需要指定varchar限制?
小智 6
我相信最大varchar长度是Postgres配置设置.但是,它看起来好像不能超过1GB.
话虽如此,将大型varchar列作为主键可能不是一个好主意.考虑使用序列号或bigserial(http://www.postgresql.org/docs/current/interactive/datatype-numeric.html#DATATYPE-SERIAL)
你应该做一个测试。
我已经在 PostgreSQL 8.4 上使用表进行了测试,该表具有单个 varchar 列作为主键。结果是,我能够存储 235000 个 ASCII 字符、116000 个波兰语变音字符 (fg '?') 或 75000 个中文 (fg '?')。对于较大的集合,我收到一条消息:
B??D:索引行大小 5404 超过了 btree 最大值,2712
但是,该消息表明:
不能对大于缓冲区页面 1/3 的值进行索引。
所以这些值是允许的,但不是整个字符串都用于唯一性检查。
嗯,这是您可以放入该列的大量数据。但是,如上所述,如果您必须使用如此长的值作为键,那么您的设计就很糟糕。您应该使用人工主键。
归档时间: |
|
查看次数: |
8164 次 |
最近记录: |