2012-05-14 107 views
0

我們的應用程序連接到SQL Server數據庫。有一列是nvarchar(max)已添加必須包含在搜索中。這個數據庫中的記錄數量只有成千上萬,而且只有幾百人在使用該應用程序。我被告知探索全文搜索,這是必要的嗎?正在搜索nvarchar(max)字段

+0

如果你打算在裏面搜索很多,那麼可能。使用BigLumpoftext查找所有行像'%X'或/和'%XY%'或不像'%XYZ%'那樣的事情,你做的越多,它就越有價值。 –

回答

5

這就像問我在5英里外工作,我被告知考慮購買一輛車。這是必要的嗎?太多的變量給你一個簡單而正確的答案你的問題。例如,這是一個很好的散步嗎?有公共交通嗎?你的日程表是否靈活?你需要遠離午餐或下班後跑腿嗎?

如果您的典型搜索是WHERE col LIKE '%foo%',但是否有必要,全文搜索可以提供幫助 - 但是否有必要取決於此列的大小,您的搜索是否爲真通配符搜索,以及您對毫秒或納秒查詢的容差,併發量,甚至看似無關的東西,比如數據是否總是在內存中,並且可以更有效地搜索。

更好的答案是,你應該嘗試一下。使用數據副本填充表格,添加全文索引,然後通過使用全文查詢而不是LIKE來查看典型工作負載是否得到改進。它可能會,但是我們無法確切地知道,即使你添加更多細節而不是球場排數。

0

在類似的情況下,我最終創建了一個更加便於搜索和索引的表結構,然後設置一個批處理作業以將記錄從實時數據庫複製到報表。

在我的情況下,原始數據並沒有接近需要一個nvarchar(最大)列,所以我可以逃避這一點。你的旅費可能會改變。無論如何,答案是「嘗試一些事情,看看對你有用」。