使用';SQL Server全文中的CONTAINS(Foo,“A”或CONTAINS(Foo,“B”)vs CONTAINS(Foo,“x27”A”或“B”x27)

使用';SQL Server全文中的CONTAINS(Foo,“A”或CONTAINS(Foo,“B”)vs CONTAINS(Foo,“x27”A”或“B”x27),sql,sql-server,full-text-search,Sql,Sql Server,Full Text Search,我需要在一个相当大的数据库中找到一些全文索引的文本,我不知道在查询中的术语变体中使用什么更好 我看到了一些使用 SELECT Foo.Bar FROM Foo WHERE CONTAINS(Foo.Bar, "A") OR CONTAINS(Foo.Bar, "B") SELECT Foo.Bar FROM Foo WHERE CONTAINS(Foo.Bar, '"A" OR "B"') 以及一些使用 SELECT

我需要在一个相当大的数据库中找到一些全文索引的文本,我不知道在查询中的术语变体中使用什么更好

我看到了一些使用

SELECT
    Foo.Bar
FROM
    Foo
WHERE 
    CONTAINS(Foo.Bar, "A") OR 
    CONTAINS(Foo.Bar, "B")
SELECT 
    Foo.Bar
FROM 
    Foo
WHERE 
    CONTAINS(Foo.Bar, '"A" OR "B"')
以及一些使用

SELECT
    Foo.Bar
FROM
    Foo
WHERE 
    CONTAINS(Foo.Bar, "A") OR 
    CONTAINS(Foo.Bar, "B")
SELECT 
    Foo.Bar
FROM 
    Foo
WHERE 
    CONTAINS(Foo.Bar, '"A" OR "B"')

用什么更好?为什么?

整合对CONTAINS的调用(您的第二个示例)将需要更少的工作。每个CONTAINS谓词都会涉及一些开销,比如编译全文查询,这些开销是有限的。这是在会议上提出的建议之一


尽管如此,基于索引大小、查询、包含查询中单词的文档数量等因素,差异可能可以忽略不计。

如何更好?更快?也许最好是自己做一些测试来比较。目标是更快,但我的问题是一般(更快,使用更少的ram、cpu等)