我试图优化我的Postgresql 8.3 DB表,以我的能力,我不确定是否需要使用varchar_pattern_ops某些列,我对字符串的前N个字符执行LIKE.根据
this documentation,使用xxx_pattern_ops只需要“…当服务器不使用标准的”C“区域设置时.
有人可以解释这个意思吗?我如何检查我的数据库使用的区域设置?
目前,一些locale [
docs]支持只能在initdb时间设置,但是我认为与_pattern_ops相关的一个可以在运行时通过
SET进行修改,LC_COLLATE.要查看设置值,可以使用
SHOW命令.
原文链接:https://www.f2er.com/postgresql/191762.html例如:
SHOW LC_COLLATE
_pattern_ops索引在使用模式匹配结构的列(如LIKE或regexps)中非常有用.您仍然必须使用常规索引(不使用_pattern_ops)在索引上进行等式搜索.所以你必须考虑到这一点,看看你是否需要这样的索引.
关于locale是什么,它是一套关于字符排序,格式化和类似东西的规则,从语言/国家到另一个语言/国家不同.例如,在en_CA(加拿大英语)中,语言环境fr_CA(加拿大法语)可能具有一些不同的排序规则(或显示数字等等).标准“C”区域是符合POSIX标准的默认语言环境.只有严格的ASCII字符才有效,而订购和格式化的规则主要是en_US(US English)
In computing,locale is a set of parameters that defines the user’s language,country and any special variant preferences that the user wants to see in their user interface. Usually a locale identifier consists of at least a language identifier and a region identifier.