全文搜索“包含”比“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服务器有一个镜像的实例。)
我不知道,如果你的包含查询真正使用全文索引。我认为它必须进行全表扫描。因为我已经理解了不同语言中的全文索引索引词和词干。你喜欢的查询
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(列, '“文本'')。星号匹配零, 一个或多个字符
什么是执行计划的样子(该词或短语根 字或词的)?
*“但他们正在索引(填充)3天”* 2010-11-02 12:27:32
“,但它们已经索引(填充)了3天” 2010-11-02 13:21:12