在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