使用' CONTAINS(Foo," A")或包含(Foo," B")vs CONTAINS(Foo,'" A"或者" B"')在SQL Server FullText中

时间:2015-05-20 14:52:12

标签: sql sql-server full-text-search

我需要在一个非常庞大的数据库全文索引中找到一些文本,我不知道在我的查询中的术语变体中使用哪个更好。

我看过一些使用

的例子
public class BoxUser implements Serializable {
private static final long serialVersionUID = 1L;

@EmbeddedId
private BoxUserPK id;

@Enumerated(EnumType.STRING)
@Column(nullable=false)
private UserRole role;

//bi-directional many-to-one association to Box
@ManyToOne
@JoinColumn(name="boxid", nullable=false, insertable=false, updatable=false)
@Cascade({ org.hibernate.annotations.CascadeType.ALL})
private Box box;

//bi-directional many-to-one association to User
@ManyToOne
@JoinColumn(name="userid", nullable=false, insertable=false, updatable=false)
@Cascade({ org.hibernate.annotations.CascadeType.ALL})
private User user;

使用

的一些例子
SELECT
    Foo.Bar
FROM
    Foo
WHERE 
    CONTAINS(Foo.Bar, "A") OR 
    CONTAINS(Foo.Bar, "B")

有什么好用的?为什么?

1 个答案:

答案 0 :(得分:2)

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

话虽如此,根据索引大小,查询,查询中包含单词的文档数等因素,差异可以忽略不计......