0

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.1 ミリ秒かかっていることを考えると、これを最適化してパフォーマンスを向上させることはできますか?

ありがとう

4

1 に答える 1

2

Railsは全文検索を使用しているようです。全文検索に関するPostgreSQLのドキュメント、特にインデックスの作成のセクションを参照してください。

Railsはtsearch2式でいくつかの非常に奇妙なことを行っているため、PostgreSQLが一致していると認識するインデックスを作成するのが難しくなる可能性があります。この前の質問を参照してください。

インデックスを使用EXPLAIN ANALYZEしていることを確認するために使用します。

于 2013-01-08T06:26:30.540 に答える