【发布时间】:2011-03-09 15:56:01
【问题描述】:
我正在使用 Postgres 8.4,并且正在使用 ILIKE 执行搜索。由于我正在从该表中搜索 4 列(包含文本),我想知道是否可以为所有 4 列创建单个索引,而不是为每列创建索引。
谢谢。
【问题讨论】:
标签: postgresql indexing
我正在使用 Postgres 8.4,并且正在使用 ILIKE 执行搜索。由于我正在从该表中搜索 4 列(包含文本),我想知道是否可以为所有 4 列创建单个索引,而不是为每列创建索引。
谢谢。
【问题讨论】:
标签: postgresql indexing
这是一个有点复杂的话题。通常数据库不会优化 LIKE 查询,除非它被锚定到开头。如果您在 4 列中进行搜索,那么情况可能并非如此。
http://www.postgresql.org/docs/8.4/static/indexes-types.html
优化器也可以使用 B-tree 涉及查询的索引 模式匹配运算符 LIKE 和 ~ 如果模式是一个常数并且是 锚定在开头 字符串 — 例如 col LIKE 'foo%' 或 col ~ '^foo',但不是 col LIKE '%酒吧'。但是,如果您的数据库 不使用您需要的 C 语言环境 使用特殊的创建索引 支持索引的操作符类 模式匹配查询;见部分 11.9 以下。也可以对 ILIKE 和 ~* 使用 B-tree 索引,但是 仅当模式以 非字母字符,即 不受影响的字符 大小写转换。
如果您正在执行自然语言查询(如搜索引擎),您可以考虑在 postgresql 中提供全文支持...
【讨论】: