PostgreSQL char varchar数据类型搜索速度差异

时间:2019-06-12 10:58:52

标签: sql postgresql

我将为PostgreSQL中的列创建索引。

我想知道 char varchar 数据类型之间是否存在搜索速度差异?

1 个答案:

答案 0 :(得分:0)

将字符串存储为char(n)时,会添加额外的空格以将其填充到长度n

char上执行操作时,需要额外的逻辑来忽略任何尾随空格。

除此之外,char与Postgres中的varchar相同。

因此,如果要处理长度可变的字符串,请使用varchar。如果您的值是固定长度的,则没有太大区别,尽管char列可能会使您的数据库架构更容易理解。

请注意,char不能区分文字空间和填充字符之间的差异,这会导致某些奇怪的行为(按照SQL标准的要求)。例如,值''::char(1)' '::char(1)被认为是相等的,这可能不是您所期望的。因此,如有疑问,请使用varchar

如果您使用可变长度值并且不知道最大大小,则可能需要texttext的存储和性能与varchar(n)完全相同(所有字符串值均由TOAST处理),但是text没有最大长度(除了1GB的限制)适用于所有类型)。