2011-06-23 14 views
0

Sql server 2008 r2を使用しています。私たちは、約4のレコードを持つテーブルを持っています。テーブル上に全文索引(列タイトル、名前、説明)を使用しています。このテーブルには、キーワードに基づいてテーブルから10レコードを選択する検索プロシージャがあります。 SQL Server Management Studioを使用してデータベースを直接検索する場合、プロシージャは最初にそのキーワードに属するテーブルのキーワードとレコードに基づいて0〜3秒かかります。しかし、2回目の検索では3秒以上の検索が行われます。例として、キーワードとして「xxx」がある場合、テーブルには1000個のレコードがあると仮定し、レコードの表示にはわずか0秒しかかかりません。しかし、キーワード "yyy"から検索すると、テーブルに22000レコードがあれば2秒かかります。私はここで何がうまくいかないのか分かりません。検索に複数のキーワードを渡しても、検索結果の時間が長くなります。 SQL Serverの設定を確認しておく必要がありますか?助けてください。SQL Serverのパフォーマンスに関する全文検索

ご意見をお寄せください。

+1

私はゼロ受入れ評価を最初に修正することをお勧めします... –

+0

すべてのリレーショナルデータベースに全文検索を追加することは、非常によく理解された問題ドメイン向けに設計された技術を強制する*ハック*データ)は、完全に無関係(目的)の目的で作成された他のテクノロジと競合する(不十分である)。要するに、構造化されていないフルテキストデータを検索する場合は、フルテキスト検索エンジンを使用します。 –

答えて

0

これは正常です。より多くの結果を得るには、出力を生成するのに時間がかかります。結果を改ページしてみてください。最初の100件の結果が得られれば、それはずっと速くなります。後で同じクエリを使用できますが、101..200など

もう1つの問題はRAMです。より多くの結果を得るためには、保存する前に保存する必要があります。

0

あなたのクエリが複数のレコードを返した場合、あなたが検索した場合、それは時間がかかると

  • 、私は最初の時間が第2の時間より遅いクエリを実行して、このまっすぐ...

    1. を取得してみましょうより多くのキーワード(フィルタの複雑さを増やす)には時間がかかります

    私はそれを正しく理解していますか?

    もしそうなら、それらはすべて私にとってかなり正常な振る舞いのように聞こえる。

    1. MSSQLは、同じクエリのいくつかの並べ替えので、以降の実行のキャッシングは複数のレコードが返さ
    2. 速くなりますし、それはあなたのマシン
    3. より複雑にSQLサーバーからデータを移動するのにかかる長いですクエリの実行時間が長くなると、実行に時間がかかります
  • 0

    RDBMSでは、フルテキスト検索は次の2つの方法のいずれかで実行できます。テーブルは、具体的には(inverted indexを使用して)、フルテキスト検索のために索引付けされている場合、各行が一致キーワードまたは

  • ためにスキャンされなければならない前に索引付けすることなく、インデックスが一致するすべての行を識別するために使用される

    1. キーワード。

    クエリが第一の方法では、複数のキーワードを持っている場合は、キーワードがあるとして、各行は何度でもを検索する必要があり、第二に、インデックスは、各キーワードが検索されなければなりません。

    クエリにブール演算が必要な場合(含める必要がある、含める必要がない場合など)、複数の結果セットをマージして結果行を作成する必要があります。

    したがって、複数のキーワードまたはブール型フルテキストクエリで処理時間が直線的に増加することは当然のことです。

  • 関連する問題