文本数据类型和字符变化(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得出结论,其中一个约束或域通常是长度限制的最佳选择