2016-01-06 70 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

全文搜索無法做到我想要的。因爲全文搜索分析單詞並且不搜索字符串。 –