问题:text 和 varchar 之间的区别(字符不同)

text数据类型和character varying(varchar)数据类型有什么区别?

根据文档

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

另外,PostgreSQL 提供了 text 类型,可以存储任意长度的字符串。虽然类型文本不在 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) – 在 live 环境中更改限制是有问题的(更改表时需要排他锁)
  • varchar – 就像文本一样
  • text – 对我来说是赢家 – 超过 (n) 个数据类型,因为它没有问题,超过 varchar – 因为它有不同的名称

这篇文章做了详细的测试,表明所有 4 种数据类型的插入和选择的性能是相似的。它还详细介绍了在需要时限制长度的替代方法。基于函数的约束或域提供了立即增加长度约束的优势,并且基于减少字符串长度约束的情况很少见,depesz 得出结论,其中之一通常是长度限制的最佳选择。

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐