Что такое хороший тип переменной для полнотекстового поиска в SQL Server

Я объявляю новую хранимую процедуру в MS SQL Server для реализации полнотекстового поиска, и мой запрос выглядит примерно так:

Select * from table WHERE FREETEXT((col1, col2), @Search_Statement)

Вопрос точно написан ниже:

Каков правильный тип данных для переменной @Search_Statement, чтобы поддерживать большинство поисков и также иметь лучшую производительность?

(Я знаю, что если я сделаю переменную @Search_Statement длинной, она будет поддерживать больше поисковых запросов, но выполнение запросов с более длинным @Search_Statement может повлиять на производительность, и Google ограничит количество поисковых запросов 32 словами: https://www.linkedin.com/grp/post/1176637-216124982)

Я не знаю, какой из этих типов данных использовать для @Search_Statement в моей хранимой процедуре: Nvarchar(100), Nvarchar(500) или Nvarchar(MAX). Какой вариант будет лучшим? (Производительность и все остальные аспекты)

Обновление: я знаю, что должен использовать nvarchar, но каков правильный размер nvarchar? nvarchar(100),(200),(500),... или даже nvarchar(MAX)?

1 ответ

Решение

Согласно документации FREETEXT

FREETEXT ({column_name | (column_list) | *}, 'freetext_string' [, LANGUAGE language_term])

freetext_string - это nvarchar. Неявное преобразование происходит, когда в качестве входных данных используется другой символьный тип данных. В следующем примере переменная @SearchWord, которая определена как varchar(30), вызывает неявное преобразование в предикат FREETEXT.

Другие вопросы по тегам