4,000万件のレコードを含むテーブルを持つSQLServer2005データベースがあります。各レコードには、コンマで区切られたキーワードのリストを格納する列が含まれています。各キーワードは文字と数字の組み合わせです。キーワードの長さは最大7文字で、レコードごとに平均15個のキーワードがあります。キーワードは行全体で一意ではありません。
キーワードの全部または一部を検索したい。
328,245,708の一意のキー数を示すフルテキストインデックスを作成しました。検索効率は、4文字以上(テストマシンでは約100ms )のクエリでは問題ありませんが、3文字以下(テストマシンでは最大3秒)のクエリでは遅すぎます。
CONTAINSTABLE
私は両方と、同様の結果をもたらすCONTAINS
ある種のクエリを試してきました。'[query]*'
短い単語が異なるレコード間でより頻繁に繰り返されるため、短いクエリのパフォーマンスは遅くなると思います。
TOP X
結果の並べ替えは重要ではありません。ランクで並べ替えた結果を返すようにしていCONTAINSTABLE
ます。これでは、目的のパフォーマンスが得られません。
短いクエリでこの検索を高速化するにはどうすればよいですか?