在Sql Server中,我有一个包含4600万行的表。 在"标题"表的列,我想要搜索。该单词可以是任何字段值索引。
例如:
表中的值:BROTHERS COMPANY
搜索字符串:ROTHER
我希望此搜索与给定记录匹配。这正是LIKE'%ROTHER%'做。但是,LIKE' %%'由于性能问题,不应在大型表上使用。我怎样才能实现它?
答案 0 :(得分:1)
虽然我不了解您的要求,但您最好的方法可能是挑战他们。中间字符串搜索通常不太实用。如果您可以让用户执行前缀搜索(broth%
),那么您可以轻松使用全文的通配符搜索(CONTAINS(*, '"broth*"')
)。全文也可以处理后缀搜索(%rothers
)with a little extra work。
但是当谈到使用SQL Server的字符串中搜索时,你仍然坚持使用LIKE。但是,您可以使用二进制排序规则来提高LIKE的性能,如this article中所述。 (我讨厌在不包含其内容的情况下发布链接,但是在这里发布的文章太长了,我不明白这种方法总结它。)
如果这没有帮助,并且如果字符串中间的搜索对于需求很重要,那么您应该考虑使用不同的搜索解决方案,如Lucene。
答案 1 :(得分:0)
如果需要,请添加Full-Text索引。
您可以使用CONTAINS
SELECT *
FROM YourTable
WHERE CONTAINS(TableColumnName, 'SearchItem')