【发布时间】:2011-01-12 05:12:58
【问题描述】:
我需要在包含 200,000 个条目的表中查找行。有些人可能不会认为这个“大”,但它足够大,可以考虑性能。
该表包含仅由数字组成的字符串。例如,用户可以输入诸如“12340-0560-78”之类的内容,或者其中的一部分,例如'0560',我需要匹配值
12345678 和 123405678 和 0123456780等
这些是 NDC,即国家药品代码,尽管有标准,但制造商通过在其条形码的不同位置添加或省略零以各种方式对其进行格式化。
我开始让 Linq 完成这项工作,方法是从搜索字符串中删除零和非数字字符,并在删除所有零后在列上使用 Contains()。这太慢了。
所以我在表中添加了一个计算列,其中包含搜索列减去所有零。这更好,但由于 Contains(),我仍在进行表扫描。
然后我创建了一个全文索引,但意识到使用全文索引我无法搜索子字符串,只能搜索单词、短语和前缀。奇怪,但它并没有解决这个问题。
还有其他选择吗?
【问题讨论】:
标签: sql-server linq-to-sql full-text-search substring