2010-05-27 5 views
1

1) У меня есть текстовые поля FirstName, LastName и City. Они индексируются с полным текстом.Ускорить SQL Server Полнотекстовый индекс через текстовое дублирование неиндексированных столбцов

2) У меня также есть поля FK int AuthorId и EditorId, а не полнотекстовые индексы.

Поиск по FirstName = «ABC» И AuthorID = 1 будет первым поиск всех полнотекстового индекса для «ABC», а затем сузить набор результатов для AuthorID = 1.

Это плохо, потому что это огромная трата ресурсов, поскольку полнотекстовый поиск будет выполняться по многим записям, которые не будут применяться.

К сожалению, это, по моему знанию, невозможно обернуть (узким по AuthorId сначала, а затем полнотекстовым поиском подмножества, которое соответствует), потому что процесс FTS отделен от SQL Server.

Теперь мое предлагаемое решение, на которое я обращаю обратную связь: имеет смысл создать еще один вычисленный столбец, который будет включен в полнотекстовый поиск, который идентифицирует автора как текст (например, AUTHORONE). Таким образом, я мог бы избавиться от ограничения AuthorId и вместо этого сделать его частью моего полнотекстового поиска (поиск «abc» будет «abc» и «AUTHORONE» - все выполняется как часть полнотекстового поиска).

Это хорошая идея или нет? Зачем?

ответ

0

В SQL 2000 и SQL 2005, это абсолютно хорошая идея для встраивания ключей поиска в столбцы, на которые построен полный текстовый индекс. Это связано с тем, что SQL 2000 и SQL 2005 не эффективно обрабатывают то, что Microsoft называет mixed query scenarios.

В SQL 2008 полный текст полностью интегрирован в базу данных, и вам, как правило, не нужно внедрять другие ключи поиска в данные.

Примечание: В приведенном выше примере вам не нужно преобразовывать «1» в слово «ОДИН». SQL FT найдет «Author1» просто отлично.

Смежные вопросы