none
フルテキストインデックスの検索で30秒以上かかる場合がある RRS feed

  • 質問

  • お世話になります。

    ASP.NET 2.0環境にてSQL Server 2005 SP2を利用して運用を行っています。

    先日、クライアントより「WebからGoogleのような検索ができるようにしてくれ」との要望があり、SQL Server 2005のフルテキストインデックスの利用を検討しました。

    設定自体はなんなく行えたのですが、CONTAINS句、またはFREETEXT句による検索で30秒超の時間がかかってしまう現象にあたりました。以下、事象について箇条書きします。

    • 語彙数4というような極端に少ない状況でも発生
    • SSMSからのクエリ発行、およびASP.NETからADO.NET経由でのsp_executesqlによりクエリ発行の両方で発生
    • 30秒超かかったクエリ以降は、同じクエリを何回発行しても数瞬で結果が帰ってくる
    • 30秒超かかったクエリから30分程アイドルが続いた後に、同じクエリを発行すると、また30秒超かかる(この間インデックス対象のデータは変更無)
    • カタログの作成状態が「アイドル」時であっても発生
    • 変更の追跡は「自動」でも「オフ」でも発生
    考えられます原因や、見直すべき設定がありましたらご教示お願いいたします。

    2010年8月8日 7:23

回答

すべての返信

  • 英語ですが、以下が参考になるかもしれません。

    SQL Server first full text search takes a long time to return results
    http://forums.asp.net/t/1559847.aspx


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2010年8月8日 14:48
  • ありがとうございます。

    提示いただいたリンクからのKBの対応を行ったところ、解消されました。

    後のためにKBのリンクと概略を貼らせていただきます。


    You may experience a 45-second delay when you run a full-text query in an instance of SQL Server 2005 that is running on a server without Internet access 
    http://support.microsoft.com/kb/915850/en-us


    インターネット アクセス権のないサーバーで実行されている SQL Server 2005 のインスタンスでフルテキスト クエリを実行すると 45 秒遅延が発生する可能性があります。 
    http://support.microsoft.com/kb/915850/ja-jp

    対応は「証明書の検証を行わないようにする」というものですので、万人に推奨された対応ではないようです。 弊環境ではイントラであり問題なしと判断しました。

    KB対応前はSELECT FULLTEXTSERVICEPROPERTY('VerifySignature')が1で、対応後に同クエリで0になったことを確認。反映はほぼ即時でした。

    以上。ありがとうございました。

    2010年8月9日 12:30