使用“OR”时,SQL Server全文搜索性能大幅下降在where子句中
假设我有两个表tab1,tab2。在这两个表的所有varchar列上创建的全文索引。然后发出以下SQL:
SELECT *
FROM tab1 a
JOIN tab2 b on a.ID = b.ID
WHERE CONTAINS(a.*, @keystring)
OR CONTAINS(b.*,@keystring)
这很慢(差不多30秒)。但是,如果我发出以下SQL:
SELECT *
FROM tab1 a
JOIN tab2 b on a.ID = b.ID
WHERE CONTAINS(a.*, @keystring)
...要么:
SELECT *
FROM tab1 a
JOIN tab2 b on a.ID = b.ID
WHERE CONTAINS(b.*,@keystring)
表现相当不错(不到秒)
如何解决这个问题?
没有找到相关结果
已邀请:
2 个回复
砷竣阿
或者如果您不关心键串是否同时存在重复项,请使用UNION all。 查看您的执行计划以查看差异,但OR经常会使查询运行得更慢。
芦歉竭皑