我正在使用Postgres 8.4,我正在使用ILIKE进行搜索。由于我正在从该表中搜索4列(包含文本),我想知道是否可以为所有4列创建单个索引而不是每列的索引。
谢谢。
答案 0 :(得分:1)
这是一个复杂的话题。通常,数据库不会优化LIKE查询,除非它锚定到开头。如果您正在搜索4列,那么情况并非如此。
http://www.postgresql.org/docs/8.4/static/indexes-types.html
优化器也可以使用B树 涉及的查询的索引 模式匹配运算符LIKE和〜 如果模式是常数并且是 锚定到了开头 字符串 - 例如,col LIKE'foo%' 或col~' ^ foo',但不喜欢 '%酒吧'。但是,如果您的数据库有 不要使用您需要的C语言环境 用特殊的方法创建索引 运算符类以支持索引 模式匹配查询;见节 11.9以下。也可以将B树索引用于ILIKE和〜*,但是 只有当模式开始时 非字母字符,即 不受影响的字符 大/小写转换。
如果您正在进行自然语言查询(如搜索引擎),您可以考虑使用postgresql中的全文支持...