查询返回不同的结果

时间:2011-09-01 17:28:42

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

我有2个查询(我相信他们必须返回相同数量的行:)):

1

SELECT NAME
FROM myDataBase.myTable
WHERE CONTAINS(NAME, 'ABC')

2

SELECT NAME
FROM myDataBase.myTable
WHERE NAME LIKE '%ABC%'

但实际上我有以下结果(例如):

用于(1.)查询

  • 首次执行(1.)查询:受影响的980行
  • 第二次执行(1.)查询:受影响的996行
  • ...
  • N执行(1.)查询: 1000行受影响

和(2.)查询

  • 首次执行(2.)查询:受影响的1000行

所以我的问题是:为什么会发生?我做错了什么? :)

P.S。我是Sql Server的新手和它的功能,所以我理解这是我缺乏理论,没有发现任何关于这个问题,所以决定问一下

2 个答案:

答案 0 :(得分:2)

CONTAINS是一个全文谓词,根据当前语言的断字规则在全文索引中查找单词“ABC”。

LIKE扫描列。

所以LIKE会找到'XABCX',而CONTAINS则不会。

答案 1 :(得分:1)

CONTAINS使用全文搜索引擎。

完全有可能在该查询的运行之间重建FTS索引。如果是这种情况,那么我会期待你看到的结果。

因此,要么不使用FTS,要么将FTS人口计划更改为更可接受的程度。