4

asp と SQL Server Full-text で詳細な検索をしようとしています。

キーワードが送信されたら、複数のテーブルで検索する必要があります。例えば、

表 -メンバー

  • member_id
  • contact_name

表 -教育

  • member_id
  • school_name

私の質問;

select mem.member_id, mem.contact_name, edu.member_id, edu.school_name from Members mem FULL OUTER JOIN Education edu on edu.member_id=mem.member_id where CONTAINS (mem.contact_name, '""*"&keyword&"*""') or CONTAINS (edu.school_name, '""*"&keyword&"*""') order by mem.member_id desc;

このクエリは機能しますが、実行に非常に時間がかかります。

フィルがキーワードというイメージ。一致する場合mem.contact_nameはそれをリストするか、または の場合edu.school_name matchesは教育がキーワードに一致するものをリストします。

うまく説明できればいいのですが:)私の英語で申し訳ありません。

4

3 に答える 3

1

おそらく、マージされたデータセットを含むインデックス付きビューを試してみてください。個々のテーブルの代わりにフルテキスト インデックスをそこに追加できます。また、必要な数のテーブルにさらに拡張できます。もちろん、唯一のトリックはスペースです...

于 2009-12-22T09:46:25.727 に答える
-1

あなたの速度に影響を与えるいくつかの点が理解できません。

  1. 本当に完全外部結合が必要ですか? それはあなたを殺している。これらのテーブルは 1 対 1 のようです。その場合、内部結合にできませんか?
  2. 次のように、列リストをcontainsに渡すことはできませんか:

    SELECT mem.member_id,
         mem.contact_name,
         edu.member_id,
         edu.school_name
    FROM members mem
        INNER JOIN education edu ON edu.member_id = mem.member_id
    WHERE Contains((mem.contact_name,edu.school_name),'*keyword*')
    ORDER BY mem.member_id DESC 
    

containsに関する詳細情報。

于 2009-12-21T11:07:33.527 に答える