我有两个全文搜索查询
查询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
为什么第二个查询这么慢?
答案 0 :(得分:1)
在这种情况下,我怀疑引擎不够智能,不知道你在查询过程中没有做任何可能修改@keysearch变量的事情(例如:聚合字符串连接的某些技巧会这样做),因此它必须为表中的每一行重新运行='%%'
检查。它也可能使全文索引无效。