テーブルがSite
ありContent
、データベースに含まれています。
各サイトは異なるクライアントによって運営されており、各サイトには独自のコンテンツがあります。
サイトのフロント エンドでは、コンテンツ テーブルで全文/フリーテキスト検索を使用して結果を返す検索ボックスを提供していますが、各サイトはデータベース内の他のサイトからではなく、それ自体からのみ結果を返すことができます。
ここでは、SQL Server クエリ オプティマイザーの動作が適切ではありません。コンテンツの少ないサイトのクエリを最適化すると、コンテンツの多いサイトのクエリはひどく実行され、タイムアウトが発生します。
これを修正するためにクエリの最後に追加できることは理解してOPTION(RECOMPILE)
いますが、私の質問はこれです...
サイトごとにキャッシュ テーブルを作成して、各サイトのコンテンツを定期的にキャッシュし、パラメーターを使用する代わりに検索ストアド プロシージャでキャッシュ テーブルを検索できるようにする方がよいでしょうか?
キャッシュは、コンテンツが追加/変更されるたびにのみ更新/更新されます。
私の考えでは、これは....
a) 検索対象のテーブルのサイズを縮小して、正しいサイトのレコードのみが含まれるようにします
b) 全文検索で各サイトのコンテンツのより正確なインデックスを生成できるようにする
c) クエリ オプティマイザが各サイトの最適化されたクエリを個別にキャッシュできるようにする
これは正しいです?このようにするのは正しいですか?