【发布时间】:2020-04-14 01:52:40
【问题描述】:
这可能是一个愚蠢的问题,但我想知道是否应该将 VARCHAR(n) 或 TEXT 用于包含英语短语的列。我不确定的原因是因为我不知道最大长度,一些短语最多可以包含 15 个单词或更多。我想 VARCHAR(500) 会很好用,但我也在考虑最坏的情况。我读到 PostgreSQL 中的 TEXT 和 VARCHAR(n) 之间没有性能差异。在这种情况下我应该选择 TEXT 吗?
【问题讨论】:
这可能是一个愚蠢的问题,但我想知道是否应该将 VARCHAR(n) 或 TEXT 用于包含英语短语的列。我不确定的原因是因为我不知道最大长度,一些短语最多可以包含 15 个单词或更多。我想 VARCHAR(500) 会很好用,但我也在考虑最坏的情况。我读到 PostgreSQL 中的 TEXT 和 VARCHAR(n) 之间没有性能差异。在这种情况下我应该选择 TEXT 吗?
【问题讨论】:
文本没有限制,因此它可能是一个正确的选择,而且您对性能的看法是正确的:这是 postgres 文档:
这三种类型之间没有性能差异,除了在使用空白填充类型时增加了存储空间,以及在存储到长度受限的列时需要一些额外的 CPU 周期来检查长度。虽然 character(n) 在其他一些数据库系统中具有性能优势,但在 PostgreSQL 中没有这样的优势;事实上 character(n) 通常是三个中最慢的,因为它有额外的存储成本和较慢的排序。在大多数情况下,应改为使用文本或字符变化。
但您必须知道它不是标准 SQL。
【讨论】: