在Sql Server中,我有一个包含4600万行的表。 在表格的“标题”栏中,我想进行搜索。这个词可以是任何字段值的索引。SQL Server高效搜索LIKE'%str%'
例如:
价值表:BROTHERS COMPANY
搜寻字符串:ROTHER
我想这个搜索匹配给定的记录。这正是“%ROTHER%”所做的。但是,由于性能问题,不应该在大型表上使用LIKE'%%'用法。我怎样才能实现它?
在Sql Server中,我有一个包含4600万行的表。 在表格的“标题”栏中,我想进行搜索。这个词可以是任何字段值的索引。SQL Server高效搜索LIKE'%str%'
例如:
价值表:BROTHERS COMPANY
搜寻字符串:ROTHER
我想这个搜索匹配给定的记录。这正是“%ROTHER%”所做的。但是,由于性能问题,不应该在大型表上使用LIKE'%%'用法。我怎样才能实现它?
虽然我不知道你的要求,你最好的办法可能是挑战他们。中间的字符串搜索通常不太实际。如果您可以让用户执行前缀搜索(broth%
),那么您可以轻松使用全文的通配符搜索(CONTAINS(*, '"broth*"')
)。全文也可以处理后缀搜索(%rothers
)with a little extra work。
但是,当涉及到SQL Server的中间字符串搜索时,您使用LIKE卡住了。但是,如this article中所述,您可以通过使用二进制归类来提高LIKE的性能。 (我讨厌发布一个链接,但不包括其内容,但是这篇文章发布的时间太长,我不明白这个方法足以总结它。)
如果这样做没有帮助,并且如果中间的字符串搜索是一个重要的要求,那么你应该考虑使用不同的搜索解决方案,如Lucene。
如果需要,可添加Full-Text索引。
您可以搜索使用CONTAINS
表:
SELECT *
FROM YourTable
WHERE CONTAINS(TableColumnName, 'SearchItem')
似乎你的答案是一样的我的评论... – User2012384
不,因为如果你在谷歌搜索,那么你会发现很多关于此的资源。请不要误解。 – Suvro
全文搜索无法做到我想要的。因为全文搜索分析单词并且不搜索字符串。 –
你有全文索引吗?尝试张贴表结构,并使用“包含”进行搜索 – User2012384