提高全文查询的性能

时间:2012-09-25 05:55:21

标签: sql sql-server

我有两个全文搜索查询

查询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='%%')

时间执行此查询:11s

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

1 个答案:

答案 0 :(得分:1)

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