Подтвердить что ты не робот

Производительность, похожая на "% Query%" и полный текстовый поиск CONTAINS query

У меня есть ситуация, когда я хотел бы найти одно слово.

Для этого сценария, какой запрос был бы хорош с точки зрения производительности?

Select Col1, Col2 from Table Where Col1 Like '%Search%'

или

Select Col1, Col2 from Table Where Col1 CONTAINS(Col1,'Search')

?

4b9b3361

Ответ 1

Поиск в полнотекстовом поиске (с использованием CONTAINS) будет быстрее/эффективнее, чем использование LIKE с подстановочным знаком. Полный поиск текста (FTS) включает в себя возможность определения индексов Full Text, которые могут использовать FTS. Dunno, почему вы не указали индекс FTS, если вы намеревались использовать функциональность...

LIKE с подстановочными знаками в левой части (IE: LIKE '%Search') не может использовать индекс (при условии, что он существует для столбца), гарантируя сканирование таблицы. Я не тестировал и не сравнивал, но регулярное выражение имеет ту же ошибку. Чтобы уточнить, LIKE '%Search' и LIKE '%Search%' могут не использовать индекс; LIKE 'Search%' может использовать индекс.

Ответ 2

Для типичной базы данных поиск CONTAINS может быть намного быстрее, если для поиска поля будет создан соответствующий индекс полнотекстового поиска. Оценка оператора LIKE обычно не использует индекс и, следовательно, должна считывать все данные.

Ответ 3

Как и поиск в таблице, он сам, убьет производительность. Лучше применять как поиск в CTE.