text 和 varchar 之间的区别(字符不同)
·
问题: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 得出结论,其中之一通常是长度限制的最佳选择。
更多推荐
所有评论(0)