Производительность подобных '%Query %' по сравнению с полнотекстовым поиском СОДЕРЖИТ запрос

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

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

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

или

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

?

40
задан Peter Mortensen 31 January 2014 в 21:55
поделиться

2 ответа

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

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

39
ответ дан 27 November 2019 в 01:53
поделиться

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

6
ответ дан 27 November 2019 в 01:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: