1

我有两个全文搜索查询

查询一:

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

执行此查询的时间:0.2 s

查询 2:

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

执行此查询的时间:11s

为什么第二个查询这么慢?

4

1 回答 1

1

在这种情况下,我怀疑引擎不够聪明,无法知道您没有做任何可能在查询过程中修改 @keysearch 变量的事情(例如:某些技巧来执行聚合字符串连接),所以它必须对表中的每一行重新运行='%%'检查。它还可能使全文索引无效。

于 2012-09-25T06:40:07.977 回答