我们刚刚将SQL Server 2005升级到SQL Server 2008 R2,并注意到一些性能问题。 下面的查询已经很慢了,但现在在2008年它只是超时。我们重建目录,以确保其在2008年升级后全文查询需要几分钟而不是分秒
DECLARE @FREETEXT VARCHAR新鲜的(255)= 'TEN-T'
select Distinct ...
from
DOSSIER_VERSION
inner join
DOSSIER_VERSION_LOCALISED ...
where
CONTAINS(DOSSIER_VERSION.*,@FREETEXT)
or
CONTAINS(DOSSIER_VERSION_LOCALISED.*,@FREETEXT)
的查询接受分钟如果启用了这两个条件。
如果你只是把下面的地方
CONTAINS(DOSSIER_VERSION。*,@ FREETEXT)
其超快。同去的,如果它只是
包含案例(DOSSIER_VERSION_LOCALISED。*,@ FREETEXT)
由于我们OR符号,结果我预计的时间为这个查询运行到小于的总和,但如上所述,它需要几分钟/次。
任何人都可以告诉我这里发生了什么?如果我使用联合(这在概念上与or相同),但性能问题已消失,但我想知道我遇到了什么问题,因为我想避免重写查询。
的问候,汤姆
可能的重复[添加更多或CONTAINS搜索带来查询抓取](http://stackoverflow.com/questions/2906812/adding-more-or-searches-with-contains-brings-query-to-crawl ) – 2010-08-24 22:10:37