varchar 字段声明的大小对 PostgreSQL 有影响吗?
从性能角度来看,VARCHAR(100)
比 VARCHAR(500)
更好吗? 磁盘使用情况如何?
今天谈论的是 PostgreSQL,而不是历史上某个时期的某个数据库。
Is VARCHAR(100)
any better than VARCHAR(500)
from a performance point of view? What about disk usage?
Talking about PostgreSQL today, not some database some time in history.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
varchar(m)
和varchar(n)
之间没有区别。http://archives.postgresql.org/pgsql-admin/2008-07/msg00073.php
varchar(n) 之间有区别
和text
不过,varchar(n)
有一个内置约束,必须进行检查,而且实际上速度有点慢。http://archives.postgresql.org/pgsql-general/2009-04 /msg00945.php
There is no difference between
varchar(m)
andvarchar(n)
..http://archives.postgresql.org/pgsql-admin/2008-07/msg00073.php
There is a difference between
varchar(n)
andtext
though,varchar(n)
has a built in constraint which must be checked and is actually a little slower.http://archives.postgresql.org/pgsql-general/2009-04/msg00945.php
TEXT /is/ 与 VARCHAR 相同,没有明确的长度,文本
指的是 VARCHAR 和 TEXT(因为 VARCHAR(n) 只是 TEXT 的有限版本)。人为地限制 VARCHARS 没有真正的存储或性能优势(开销基于实际长度)字符串的长度,而不是底层 varchar 的长度),除了可能与通配符和正则表达式的比较(但在这开始重要的级别,您可能应该考虑诸如 PostgreSQL 的全文索引支持之类的东西)。
TEXT /is/ the same as VARCHAR without an explicit length, the text
refers to both VARCHAR and TEXT (since VARCHAR(n) is just a limited version of TEXT). Limiting your VARCHARS artificially has no real storage or performance benefits (the overhead is based on the actual length of the string, not the length of the underlying varchar), except possibly for comparisons against wildcards and regexes (but at the level where that starts to matter, you should probably be looking at something like PostgreSQL's full-text indexing support).
它们是相同的。
来自 PostgreSQL 文档:
http://www.postgresql.org/docs/ 8.3/static/datatype-character.html
这里他们讨论的是 char(n)、varchar(n) 和 text (= varchar(1G)) 之间的区别。 官方的说法是varchar(100)和text(非常大的varchar)之间没有区别。
They are identical.
From the PostgreSQL documentation:
http://www.postgresql.org/docs/8.3/static/datatype-character.html
Here they are talking about the differences between char(n), varchar(n) and text (= varchar(1G)). The official story is that there is no difference between varchar(100) and text (very large varchar).