1

2 つの全文検索クエリがあります

クエリ 1:

Declare @KEYSEARCH nvarchar(4000)="string search here....".
SELECT * FROM TABLE1 WHERE CONTAINS(col1,@KEYSEARCH)

このクエリの実行時間: 0.2 秒

クエリ 2:

 Declare @KEYSEARCH nvarchar(4000)="string search here....".
 SELECT * FROM TABLE1 WHERE (CONTAINS(col1,@KEYSEARCH) or @KEYSEARCH='%%')

このクエリの実行時間: 11 秒

2 番目のクエリが非常に遅いのはなぜですか?

4

1 に答える 1

1

この場合、エンジンは、クエリの過程で @keysearch 変数を変更する可能性のある何かを行っていないことを認識できるほどスマートではないと思われます (例: 集約文字列連結を行う特定のトリックがこれを行います)。='%%'テーブル内のすべての行に対してチェックを再実行する必要があります。また、全文索引が無効になる場合もあります。

于 2012-09-25T06:40:07.977 に答える