参考 Postgres 文档字符类型 http://www.postgresql.org/docs/current/static/datatype-character.html,我不清楚指定字符变化(varchar)类型的长度。
假设:
- 字符串的长度对应用程序来说并不重要。
- 你不在乎有人将最大大小放入数据库中
- 你有无限的硬盘空间
它确实提到:
短字符串(最多126字节)的存储要求是1字节
加上实际的字符串,其中包括大小写中的空格填充
的性格。较长的字符串有 4 个字节的开销,而不是 1 个。
长字符串会被系统自动压缩,所以
对磁盘的物理要求可能会更少。很长的值也是
存储在后台表中,以便它们不会干扰快速
访问较短的列值。无论如何,尽可能长的
可存储的字符串约为1GB。 (最大值
数据类型声明中允许 n 小于
那。改变这个是没有用的,因为对于多字节
字符编码的字符数和字节数可以相当
不同的。
这里讨论的是字符串的大小,而不是字段的大小(即听起来它总是会压缩大 varchar 字段中的大字符串,但不会压缩大 varchar 字段中的小字符串?)
我问这个问题是因为指定一个更大的尺寸会更容易(而且更懒),所以你永远不必担心字符串太大。例如,如果我为地名指定 varchar(50),我将获得具有更多字符的位置(例如 Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch),但如果我指定 varchar(100) 或 varchar(500),我不太可能遇到该问题。
那么,如果最大的字符串长度为 400 个字符,那么 varchar(500) 和(任意)varchar(5000000) 或 text() 之间的性能会受到影响吗?
同样出于兴趣,如果有人知道这个问题的答案并且知道其他数据库的答案,也请添加。
我用谷歌搜索过,但没有找到足够的技术解释。
我的理解是,有约束对数据很有用正直,因此我使用列大小来验证较低层的数据项,并更好地描述数据模型。
关于此事的一些链接:
- VARCHAR(n) 被认为是有害的 http://people.planetpostgresql.org/dfetter/index.php?/archives/24-VARCHARn-Considered-Harmful.html
- CHAR(x) 与 VARCHAR(x) 与 VARCHAR 与 TEXT http://www.depesz.com/index.php/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/
- 捍卫 varchar(x) http://www.postgresonline.com/journal/archives/154-In-Defense-of-varcharx.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)