2

SQL Server (2008 R2) の全文検索にパフォーマンスの問題があります。全文検索条件にwhere条件を追加すると、遅くなりすぎます。

これが私の単純化されたクエリです:

SELECT * FROM Calls C
WHERE (C.CallTime BETWEEN '2013-08-01 00:00:00' AND '2013-08-07 00:00:00')
AND CONTAINS(CustomerText, '("efendim")')

Calls テーブルの主キーは CallId (int、クラスター化インデックス) であり、CallTime によってインデックス付けされた Calls テーブルでもあります。16.000.000 行あり、CustomerText は各行で約 10KB です。

実行計画を見ると、まず全文検索の結果セットを見つけて、CallId で Calls テーブルに結合します。そのため、最初の結果セットの行が増えると、クエリが遅くなります (1 分以上)。

これは実行計画です:

これが実行計画です

where 条件を個別に実行すると、CallTime 条件に対して 360.000 行が返されます。

SELECT COUNT(*) FROM Calls C
WHERE (C.CallTime BETWEEN '2013-08-01 00:00:00' AND '2013-08-07 00:00:00')

および 1.200.000 行 (Contains 条件の場合):

SELECT COUNT(*) FROM Calls C
WHERE CONTAINS(AgentText, '("efendim")')

では、クエリの実行者を増やすにはどうすればよいでしょうか?

4

1 に答える 1