У меня есть база данных с большим количеством слов, которые будут использоваться в системе тега. Я создал необходимый код для поля автоматического заполнения, но я не уверен в том, как выбрать записи соответствия от базы данных самым эффективным способом.
Я знаю о команде LIKE, но мне кажется, что это - больше команды EQUAL. Я получаю только слова, который точно походит на слово, которое я ввожу.
Мой план состоит в том, чтобы считать каждую строку и затем использовать строку C#. StartsWith () и строка. Содержит () функции для нахождения слов, которые могут соответствовать, но я думаю, что с большой базой данных, это может быть неэффективно, чтобы считать каждую строку и затем отфильтровать их.
Существует ли путь к строкам только для чтения, который запускается с или содержит данную строку от SQL Server?
При использовании like вы предоставляете знак % в качестве подстановочного знака. Если вам нужны строки, начинающиеся с Hello, вы используете LIKE 'Hello%' Если вам нужны строки с Hello в любом месте строки, вы используете LIKE '%Hello%'
Что касается эффективности, использование Like не является оптимальным. Вам следует обратить внимание на полнотекстовый поиск.
Я знаю о команде LIKE, но мне кажется, что это скорее команда EQUAL. Я получаю только те слова, которые выглядят точно так же, как слово, которое я ввожу.
Это потому, что вы не используете подстановочные знаки:
WHERE column LIKE 'abc%'
...вернет строки, в которых значение столбца
начинается с "abc". Замечу, что при использовании подстановочных знаков это единственная версия, которая может использовать индекс на column
... er column.
WHERE column LIKE '%abc%'
... вернет строки, в которых значение column
содержит "abc". Подстановочный знак в левой части LIKE гарантирует, что индекс не может быть использован.
SQL Server не поддерживает регулярные выражения - для получения доступа к ним необходимо использовать функции CLR. Но он работает наравне с LIKE.
Полнотекстовый поиск (FTS) - лучшее средство поиска текста.
Вы можете использовать CONTAINS
в T-SQL, но я почти уверен, что вам придется использовать полнотекстовое индексирование для таблицы, участвующей в вашем запросе.