varchar字段的声明大小对PostgreSQL有影响吗?

时间:2009-07-01 02:50:51

标签: performance postgresql

从性能的角度来看,VARCHAR(100)是否比VARCHAR(500)更好?磁盘使用情况怎么样?

今天谈论PostgreSQL,而不是历史上的某个数据库。

3 个答案:

答案 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