Что такое хороший тип переменной для полнотекстового поиска в 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.