我有一個要求在包含200,000個條目的表中查找行。有些人可能不認爲這個「大」,但它足夠大,以保證性能考慮。用Linq和SQL Server搜索匹配子字符串的最佳技術
表中包含只由數字串。例如,用戶可以輸入諸如「12340-0560-78」之類的東西,或者其部分,例如, 「0560」,我需要匹配值
12345678和 123405678和 等
這些國家數據中心,國家藥品代碼,並不顧標準,製造商在通過各種方式對其進行格式化在其條形碼的各個位置添加或省略零。
我開始了讓LINQ的做工作,從搜索字符串刪除零和非數字字符,並從中取出全部爲零之後,使用載有()在列。這太慢了。
所以我加了一個計算列的表,包含搜索欄減去全部爲零。這樣更好,但由於Contains(),我仍然在進行表掃描。
然後我創建了一個全文索引,但後來發現與全文索引我不能搜索子,只爲單詞,短語,和前綴。奇怪,但它不能解決這個問題。
還有其他選擇嗎?
我忘了提及 - 我在計算列上創建了一個索引,否則它不會提供任何優勢。它現在可以正常工作,除非有更好的答案出現,否則我會接受你的。 – cdonner 2010-02-04 12:39:00