SQL Server高效搜索LIKE'%str%'

时间:2016-01-06 09:31:06

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

在Sql Server中,我有一个包含4600万行的表。 在"标题"表的列,我想要搜索。该单词可以是任何字段值索引。

例如:

表中的值:BROTHERS COMPANY

搜索字符串:ROTHER

我希望此搜索与给定记录匹配。这正是LIKE'%ROTHER%'做。但是,LIKE' %%'由于性能问题,不应在大型表上使用。我怎样才能实现它?

2 个答案:

答案 0 :(得分:1)

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

但是当谈到使用SQL Server的字符串中搜索时,你仍然坚持使用LIKE。但是,您可以使用二进制排序规则来提高LIKE的性能,如this article中所述。 (我讨厌在不包含其内容的情况下发布链接,但是在这里发布的文章太长了,我不明白这种方法总结它。)

如果这没有帮助,并且如果字符串中间的搜索对于需求很重要,那么您应该考虑使用不同的搜索解决方案,如Lucene。

答案 1 :(得分:0)

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

您可以使用CONTAINS

搜索表格
SELECT *
FROM YourTable
WHERE CONTAINS(TableColumnName, 'SearchItem')