是否可以不使用全文索引,我們可以根據關鍵字搜索巨大的表嗎?SQL Server搜索表中的數百萬行
我要搜索項Country man working
並返回結果如下:
- 國家的人開始對失敗的邊緣工作
- 國家
- 人開始了他的工作
是否可以不使用全文索引,我們可以根據關鍵字搜索巨大的表嗎?SQL Server搜索表中的數百萬行
我要搜索項Country man working
並返回結果如下:
這應返回您要求的結果:
SELECT *
FROM TABLE
WHERE Field LIKE '%country%'
OR Field LIKE '%man%'
OR Field LIKE '%working%'
個
速度雖然沒有保證......從註釋
注意事項 - 這真的不是這樣做的方法。全文索引是使用的方法,但是您沒有詳細說明爲什麼它不是一個選項。
搜索不是那麼簡單,這個查詢將忽略所有的索引。我們需要更好的表現。 – 2012-04-18 10:32:08
你問了一個沒有全文索引的方法。所以,在這裏。另一種方法是創建一個全文索引,這將是一個更好的方法。 – Paddy 2012-04-18 11:08:11
但是用'LIKE'%man%''搜索表達式,你基本上正在做一個全表掃描 - 這將會在具有數百萬行的表上顯得**非常慢,因爲沒有索引可以被使用**永遠** ... – 2012-04-18 11:28:52
創建一個表來包含字典中的所有單詞,減去噪音詞。
創建一個表,詞典關鍵詞表鏈接到您的數據表
編寫一些代碼來創建鏈接表中的記錄,其中在字典中的單詞,你要搜索的表出現在文本列。
然後你就可以查了一下,像這樣:
SELECT T.TextStuff
FROM KeywordTable AS K
JOIN LinkTable AS L ON L.KeywordID = K.KeywordID
JOIN TableToSearch AS T ON T.KeyWordID = L.KeywordID
WHERE K.Keyword = 'Country'
OR K.Keyword = 'man'
OR K.Keyword = 'working'
那僅僅是僞代碼,但希望它會驗證這個想法。耗時設置,但應該比做一堆LIKE更好。總結一下,你需要查看一張你每行有一個單詞的表格,那些匹配你希望在鏈接表格中找到的單詞,然後從那裏你可以得到原始表格中的記錄。
爲什麼你不能使用全文索引?如果沒有它,使用LIKE或CHARINDEX語句對於這樣一個大型表格將會非常慢。 – 2012-04-18 09:55:47