Mr *_*ubs 14 database postgresql varchar database-design types
参考关于字符类型的Postgres文档,我不清楚指定字符变化(varchar)类型的长度.
假设:
它确实提到:
短字符串(最多126个字节)的存储要求是1个字节加上实际字符串,其中包括字符空间填充.较长的字符串有4个字节的开销而不是1.长字符串由系统自动压缩,因此磁盘上的物理要求可能更少.非常长的值也存储在后台表中,因此它们不会干扰对较短列值的快速访问.在任何情况下,可存储的最长字符串大约为1 GB.(数据类型声明中n允许的最大值小于此值.更改此值没有用,因为使用多字节字符编码时,字符数和字节数可能会大不相同.
这是关于字符串的大小,而不是字段的大小,(听起来它总是会压缩大型varchar字段中的大字符串,而不是大型varchar字段中的小字符串?)
我问这个问题,因为指定一个更大的尺寸会更容易(和懒惰),所以你永远不必担心字符串太大.例如,如果我为地名指定varchar(50),我将获得具有更多字符的位置(例如Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch),但如果我指定varchar(100)或varchar(500),我就不太可能得到这个问题.
如果您的最大字符串长达400个字符,那么你会在varchar(500)和(任意)varchar(5000000)或text()之间获得性能影响吗?
如果有人对此有答案并且知道其他数据库的答案,也不感兴趣,请添加它.
我用谷歌搜索,但没有找到足够技术性的解释.
Mar*_*ani 12
我的理解是,使用约束对数据完整性很有用,因此我使用列大小来验证较低层的数据项,并更好地描述数据模型.
关于此事的一些链接:
我的理解是,这是旧数据库的遗留物,其存储空间不如Postgres灵活.有些人会使用固定长度的结构来轻松找到特定的记录,并且由于SQL是一种有些标准化的语言,即使它没有提供任何实际的好处,仍然可以看到遗留物.
因此,对于Postgres来说,你的"做大"的方法应该是一个完全合理的方法,但它可能无法很好地转移到其他不太灵活的RDBMS系统.
归档时间: |
|
查看次数: |
12531 次 |
最近记录: |