2013-10-02 60 views
1

我想查找所有與謂詞MyColumn LIKE '%FooBar'匹配的行,但是通過使用索引搜索而不是掃描。SQL Server中高效的字符串後綴搜索?

一種方法主要是創建MyColumn的反轉版本,並在該列上使用常規索引在反向列上搜索反轉模式(ooF%)。

但是,我不喜歡手動創建這個反轉列。 Oracle具有反轉鍵索引的概念,可以自動索引REVERSE(MyColumn)而無需手動實現該列的反轉版本(以表格上物理列的形式或創建索引視圖)。

有沒有其他方法可以有效地在SQL Server中執行後綴子字符串搜索?

+2

是[全文搜索](http://technet.microsoft.com/zh-cn/library/ms142571.aspx)選項嗎? – Bridge

+0

@Bridge:全文搜索不會幫你解決這個問題。來自您自己的鏈接:「全文查詢通過根據特定語言(如英語或日語)的規則操作單詞和短語,對全文索引中的文本數據執行語言搜索」。你不能用這個詞來搜索部分單詞。 – TToni

+0

@Toni你可以搜索單詞和短語('一個或多個特定的單詞或短語(簡單術語)'和'一個單詞或短語,其中的單詞以指定的文本(前綴術語)開始'),但似乎你是正確 - 不後綴 - 請參閱[這個相關的問題](http://stackoverflow.com/questions/2392348/whats-wrong-with-my-fulltext-search-query)。 – Bridge

回答

2

只需使用帶有索引的計算字段或具有反轉字段的索引視圖。

是的,這將實現逆轉場。但您如何看待Oracle的逆向指標?

要使搜索高效,必須有一個物化數據結構進行搜索。

+0

將反向字符串公開爲實際表列,並在索引內隱藏此搜索技術性之間存在明顯區別,因爲此字符串反轉與商業模型有些不相干。 但似乎沒有辦法有效的後綴搜索沒有明確暴露顛倒的字符串數據,所以我想你回答了我的問題。 :-) – someName