postgresql - 我如何知道我的 PostgreSQL 服务器是否使用 "C"语言环境?

标签 postgresql text indexing locale varchar

我正在尽我所能优化我的 PostgreSQL 8.3 数据库表,但我不确定是否需要对我正在执行 的某些列使用 varchar_pattern_ops >LIKE 针对字符串的前 N ​​个字符。根据this documentationxxx_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/

相关文章:

sql - 为什么这个索引会使 SELECT GROUP BY 查询变慢?

dynamic - 在 MongoDB 中为动态添加的字段创建索引

haskell - haskell中列表的索引列表

sql - 索引分区表的查询计划。避免顺序扫描

iphone - 如何测试 UITextField 是否为零?

java - File Writer 覆盖之前写入的 Java

python - 为什么我的 glob.glob 循环没有遍历文件夹中的所有文本文件?

postgresql - pg_stat_bgwriter表中的buffers_checkpoint的单位是什么?

postgresql - 像 excel 一样创建 Postgres Pivot

python - 如何在 Django 框架中使用用于 Java Web 应用程序的数据库?