Sql 使用全文索引实现LIKE vs CONTAINS的性能

Sql 使用全文索引实现LIKE vs CONTAINS的性能,sql,sql-server-2008,Sql,Sql Server 2008,我有一个包含大量行500k的表,MSSQL Server 2008。我有一列保存nvarchar产品ID,其长度通常为15个字符、字母和数字,例如FF93F348HJKCF5HW9。我希望能够搜索此产品ID的最佳性能。我在本专栏上做了一些关于使用全文索引的研究,我真的不认为使用CONTAINS进行全文索引比使用如“%”有任何好处。这似乎是因为在搜索整个单词时,全文索引比搜索一系列字符更为有利 有人能帮我确认/否认吗?全文索引是关于在非结构化文本数据中搜索语言单词的。您的数据不包含单词,只包含一系

我有一个包含大量行500k的表,MSSQL Server 2008。我有一列保存nvarchar产品ID,其长度通常为15个字符、字母和数字,例如
FF93F348HJKCF5HW9
。我希望能够搜索此产品ID的最佳性能。我在本专栏上做了一些关于使用全文索引的研究,我真的不认为使用
CONTAINS
进行全文索引比使用
如“%”
有任何好处。这似乎是因为在搜索整个单词时,全文索引比搜索一系列字符更为有利


有人能帮我确认/否认吗?

全文索引是关于在非结构化文本数据中搜索语言单词的。您的数据不包含单词,只包含一系列字符

我还没有对此进行测试,但我希望
LIKE
实际上会更快,只要您的数据被索引<代码>包含用于搜索单词和类似单词的结构

如果您的要求是“自动完成”,那么
LIKE
将执行得非常好,因为当您搜索诸如“F5521%”之类的
时,优化器将使用索引搜索


解释
包含
关键字的基础知识。

为什么需要搜索部分产品ID?我只是索引列并搜索精确匹配项,或者至少不搜索前导通配符。如果您的应用程序确实需要搜索部分ID,请将其作为一个单独的功能,而不是默认的查询行为,因为我认为这种需要很少。搜索部分产品ID将在web界面上的“自动完成”文本框上使用。在打成平局时,键入部分ID将显示可能匹配的向下列表。因此,不需要考虑前导通配符。这将减慢所有查询(需要完全扫描)的速度,以允许远程可能有人会随机决定从中间键入一个片段。我至少要部分匹配一个默认未选中的复选框。当然,这不是问题,但我的问题是关于
包含
类似的
,在这种情况下,使用
CONTAINS
进行全文索引比使用
LIKE
进行全文索引是否有任何性能优势全文索引是关于搜索语言单词-您的数据不包含单词,只包含一系列字符-我希望LIKE实际上会更快(如果数据被索引)。注意,contains用于搜索类似单词的结构: