全文搜索“包含”比“Like%”要慢

问题描述:

我在SQL Server 2008 x64上有全文索引问题。全文搜索“包含”比“Like%”要慢

我有三个表:

表A与90个000行

表B 12个000 000行

表C具有22个000 000行

我创建FTS目录与autopopulation。

当我查询表A:

Select * from TableA where Contains(field1, '"j*"') 

我看到较少11000个记录然后1秒

但是,当我查询表B或表C具有相同的查询我看到在2秒内250条记录。这显然非常缓慢。

查询“like%”而不是“contains”对于相同的表执行少于1秒。

问题是否存在是因为大表B和C?表A查询成功。

也许这些表需要更多时间进行索引? (但他们索引(填充)3几天了)

一些细节:

对于表B和CI总是看到 “人口状况=处理的通知”(9)

属性 “TableFulltextDocsProcessed” 总是增加

(我的SQL服务器有一个镜像的实例。)

+1

*“但他们正在索引(填充)3天”* 2010-11-02 12:27:32

+0

“,但它们已经索引(填充)了3天” 2010-11-02 13:21:12

我不知道,如果你的包含查询真正使用全文索引。我认为它必须进行全表扫描。因为我已经理解了不同语言中的全文索引索引词和词干。你喜欢的查询

Select * from TableA where Contains(field1, '"j*"') 

只有炭“Ĵ”中,如果你做了与

Select field1 from TableA where Contains(field1, 'fish') 

相同的搜索相比,

Select field1 from TableA where field1 like '%fish%' 

在这个报价,他们谈很多字不是字符。 SQL Server 2005 Full-Text Search: Internals and Enhancements

全文搜索允许快速和基于关键字的查询 存储在SQL Server数据库的文本数据的 灵活的索引。不同于LIKE 谓词,这仅适用于 字符模式,全文查询 执行对 一种语言搜索这些数据,基于特定 语言规则的单词和短语 操作。

所以我想知道如果第j *工作,如果这样一句话:“J”必须是在该全文用于与语言文字.. 看到 CONTAINS (Transact-SQL)

指定从指定文本开始的单词或短语 的匹配。 用双 引号(“”)前缀术语和结束 引号前添加一个星号 (),以便开始与星号前指定的简单用语 所有文字 是 匹配。该条款应该是这样指定的 :CONTAINS(列, '“文本'')。星号匹配零, 一个或多个字符

什么是执行计划的样子(该词或短语根 字或词的)?