从性能的角度来看,VARCHAR(100)是否比VARCHAR(500)更好?磁盘使用情况怎么样?
今天谈论PostgreSQL,而不是历史上的某个数据库。
答案 0 :(得分:30)
它们完全相同。
来自PostgreSQL文档:
http://www.postgresql.org/docs/8.3/static/datatype-character.html
提示:没有表现 这三种类型之间的差异, 除了增加存储空间的时候 使用空白填充类型,以及一些 额外的周期来检查时间长度 存储到长度受限的 柱。虽然字符(n)有 其他一些表现优势 数据库系统,它没有这样的 PostgreSQL的优点。多数情况 情况文本或字符变化 应该使用。
这里他们谈论的是char(n),varchar(n)和text(= varchar(1G))之间的区别。官方的说法是varchar(100)和text(非常大的varchar)之间没有区别。
答案 1 :(得分:9)
TEXT /与VARCHAR相同,没有明确的长度,文本
“短期存储要求 字符串(最多126个字节)是1个字节 加上实际的字符串,包括 在空间填充的情况下 字符。较长的字符串有4个字节 开销而不是1.长串 由系统压缩 自动,所以物理 磁盘上的要求可能会更少。 非常长的值也存储在 背景表,所以他们没有 干扰快速访问更短 列值。无论如何, 最长的字符串 可以存储大约1 GB。“
指VARCHAR和TEXT(因为VARCHAR(n)只是TEXT的限制版本)。人为地限制您的VARCHARS没有真正的存储或性能优势(开销是基于字符串的实际长度,而不是基础varchar的长度),除了可能用于比较通配符和正则表达式(但在开始的级别)不过,你应该看看PostgreSQL的全文索引支持。
答案 2 :(得分:8)
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