文本和varchar之间的差异(字符变化)

文本数据类型和字符变化varchar)数据类型之间有什么区别

根据文件

如果在不使用长度说明符的情况下使用字符变量,则该类型接受任何大小的字符串。后者是PostgreSQL扩展

此外,PostgreSQL提供了文本类型,它存储任意长度的字符串。虽然类型文本不在SQL标准中,但其他几个SQL数据库管理系统也有它

那么有什么区别呢

没有区别,在引擎盖下都是varlena(可变长度数组)

从Depesz查看这篇文章:http://www.depesz.com/index.php/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/

几个亮点:

总而言之:

  • char(n)–在处理短于n的值时占用太多空间(将它们填充到n),并且可能由于添加尾随而导致细微错误
    空格,再加上更改限制是有问题的
  • varchar(n)–在活动环境中更改限制是有问题的(更改表时需要独占锁)
  • varchar–就像文本一样
  • text–对我来说是个赢家–超过(n)个数据类型,因为它没有问题;超过varchar–因为它有不同的名称

本文进行了详细的测试,以表明所有4种数据类型的insert和select的性能是相似的。它还详细介绍了在需要时约束长度的其他方法。基于函数的约束或域提供了即时增加长度约束的优势,并且基于减少字符串长度约束很少,depesz得出结论,其中一个约束或域通常是长度限制的最佳选择

发表评论