У меня есть требование найти строки в таблице, содержащей 200 000 записей. Некоторые могут не считать это «большим», но оно достаточно велико, чтобы оправдать соображения производительности.
Таблица содержит строки, состоящие только из цифр. Например, пользователь может ввести что-то вроде «12340-0560-78» или его части, например, '0560', и мне нужно сопоставить значения
12345678 и
123405678 и
0123456780 и т. Д.
Это НЦД, национальные коды лекарств и, несмотря на стандарт, производители форматируют их различными способами, добавляя или опуская нули в различных позициях в своих штрих-кодах.
Я начал с того, что позволил Linq выполнить работу, удалив нули и нечисловые символы из строки поиска и используя Contains () в столбце после удаления из него всех нулей. Это слишком медленно.
Итак, я добавил вычисляемый столбец в таблицу, содержащий столбец поиска минус все нули. Это лучше, но я все еще делаю сканирование таблицы из-за Contains ().
Затем я создал полнотекстовый индекс, но понял, что с полнотекстовым индексом я не могу искать подстроки, только слова, фразы и префиксы. Странно, но это не решает эту проблему.
Есть ли другие варианты?