У меня есть функция, написанная другим разработчиком, которую я пытаюсь изменить для немного другого использования. Он используется SP для проверки того, существует ли определенная фраза в текстовом документе, хранящемся в БД, и возвращает 1, если значение найдено, или 0, если его нет. Это запрос:
SELECT @mres=1 from documents where id=@DocumentID
and contains(text, @search_term)
Документ содержит в основном XML, а search_term - это GUID, отформатированный как nvarchar (40).
Мне кажется, это работает довольно медленно (на выполнение этой части процесса уходит 5-6 секунд), но в том же файле сценария есть и вышеприведенная версия, приведенная выше
SELECT @mres=1 from documents where id=@DocumentID
and textlike '%' + @search_term + '%'
Эта версия работает НАМНОГО быстрее, занимая 4 мс по сравнению с 15 мс для первого примера.
Итак, мой вопрос: зачем использовать первое вместо второго? Я предполагаю, что у этого разработчика (который больше не работает со мной) была веская причина, но в данный момент я изо всех сил пытаюсь найти его ..
Возможно, это связано с полнотекстовой индексацией? (это - рабочая БД, с которой я работаю, так что производственная версия может лучше индексироваться ...) Я не особо разбираюсь в FTI, поэтому в данный момент не совсем уверен. Мысли / идеи?