DB索引是否可以优化pg_search,pg_search_scope方法?

时间:2013-01-08 03:56:36

标签: ruby-on-rails ruby-on-rails-3 postgresql postgresql-9.1 pg-search

我正在努力将搜索添加到我的PostgreSQL 9.1 rails应用程序中。这是设置:

class Comment < ActiveRecord::Base
  include PgSearch
  pg_search_scope :search_by_content, :against => :content

Rails C,命令:

 Comment.where(:commentable_id => 33).search_by_content('pgsql').count

Rails日志:

(348.1ms)  SELECT COUNT(*) FROM "comments" WHERE "comments"."commentable_id" = 33 AND (((to_tsvector('simple', coalesce("comments"."content"::text, ''))) @@ (to_tsquery('simple', ''' ' || 'pgsql' || ' '''))))

安装gem并设置注释模型后,说明中没有提到添加db索引来优化性能。鉴于查询本地已经花费348.1ms,我很好奇这可以优化以提高性能吗?

由于

1 个答案:

答案 0 :(得分:2)

Rails似乎在使用全文搜索 - 请参阅PostgreSQL documentation on full text search,尤其是creating indexes部分。

Rails正在使用tsearch2表达式做一些非常奇怪的事情,这可能会使创建PostgreSQL将识别为匹配的索引变得更加困难。请参阅this prior question

使用EXPLAIN ANALYZE验证它是否正在使用索引。