我正在尽我所能优化我的 PostgreSQL 8.3 数据库表,但我不确定是否需要对我正在执行 的某些列使用
针对字符串的前 N 个字符。根据this documentation ,varchar_pattern_ops
>LIKExxx_pattern_ops
的使用仅在“...当服务器不使用标准的‘C’语言环境时”是必需的。
谁能解释一下这是什么意思?如何检查我的数据库使用的语言环境?
最佳答案
当前一些语言环境 [ docs ] 支持只能在 initdb 时设置,但我认为与 _pattern_ops
相关的可以通过 SET 修改在运行时,LC_COLLATE。要查看设置值,您可以使用 SHOW命令。
例如:
SHOW LC_COLLATE
_pattern_ops
索引在使用模式匹配结构的列中很有用,例如 LIKE
或正则表达式。您仍然需要创建一个常规索引(没有 _pattern_ops
)来对索引进行相等搜索。因此,您必须考虑所有这些,看看您的表是否需要这样的索引。
关于什么locale是的,它是一组关于字符顺序、格式和类似事物的规则,这些规则因语言/国家/地区而异。例如,语言环境 fr_CA(加拿大的法语)可能与 en_CA(加拿大的英语)有一些不同的排序规则(或显示数字的方式等)。标准“C”语言环境是符合 POSIX 标准的默认语言环境。只有严格的ASCII字符才有效,排序和格式规则大多是en_US(美式英语)
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.
关于postgresql - 我如何知道我的 PostgreSQL 服务器是否使用 "C"语言环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1665726/