在Postgres表索引中包含多个字段

时间:2011-03-09 15:56:01

标签: postgresql indexing

我正在使用Postgres 8.4,我正在使用ILIKE进行搜索。由于我正在从该表中搜索4列(包含文本),我想知道是否可以为所有4列创建单个索引而不是每列的索引。

谢谢。

1 个答案:

答案 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中的全文支持...