2016-01-06 39 views
0

在Sql Server中,我有一个包含4600万行的表。 在表格的“标题”栏中,我想进行搜索。这个词可以是任何字段值的索引。SQL Server高效搜索LIKE'%str%'

例如:

价值表:BROTHERS COMPANY

搜寻字符串:ROTHER

我想这个搜索匹配给定的记录。这正是“%ROTHER%”所做的。但是,由于性能问题,不应该在大型表上使用LIKE'%%'用法。我怎样才能实现它?

+0

你有全文索引吗?尝试张贴表结构,并使用“包含”进行搜索 – User2012384

回答

1

虽然我不知道你的要求,你最好的办法可能是挑战他们。中间的字符串搜索通常不太实际。如果您可以让用户执行前缀搜索(broth%),那么您可以轻松使用全文的通配符搜索(CONTAINS(*, '"broth*"'))。全文也可以处理后缀搜索(%rotherswith a little extra work

但是,当涉及到SQL Server的中间字符串搜索时,您使用LIKE卡住了。但是,如this article中所述,您可以通过使用二进制归类来提高LIKE的性能。 (我讨厌发布一个链接,但不包括其内容,但是这篇文章发布的时间太长,我不明白这个方法足以总结它。)

如果这样做没有帮助,并且如果中间的字符串搜索是一个重要的要求,那么你应该考虑使用不同的搜索解决方案,如Lucene。

0

如果需要,可添加Full-Text索引。

您可以搜索使用CONTAINS表:

SELECT * 
FROM YourTable 
WHERE CONTAINS(TableColumnName, 'SearchItem') 
+0

似乎你的答案是一样的我的评论... – User2012384

+0

不,因为如果你在谷歌搜索,那么你会发现很多关于此的资源。请不要误解。 – Suvro

+0

全文搜索无法做到我想要的。因为全文搜索分析单词并且不搜索字符串。 –