Индексированное представление SQL Server для полнотекстового поиска - PullRequest
1 голос
/ 15 августа 2010

Я хочу использовать функцию полнотекстового поиска в Microsoft SQL Server.

Если у меня есть таблица Client, которая ссылается на другие таблицы, такие как Город, Страна, Отдел и т. Д., Лучше создать отдельную таблицуон будет содержать ненормализованные данные, которые затем будут проиндексированы в полнотекстовом формате, или лучше создать фиктивное значение в каждой внешней таблице (например, с ключом -1), а затем заменить значения NULL из таблицы Client на соответствующие им фиктивныезначений, затем создайте индексированное представление (эти фиктивные записи из-за индексированного представления и использования «внутреннего соединения» вместо «левого соединения»), а затем создайте полнотекстовый индекс для этого представления индекса?

С последним мне не пришлось бы беспокоиться о заполнении «ненормализованной» таблицы каждый раз, когда запись изменяется в Клиенте или в любой из сторонних таблиц - Город, Страна, Отдел и т. Д.

Или, может быть, ничего из вышеперечисленного, я мог бы также использовать некоторые новые идеи:)

1 Ответ

4 голосов
/ 15 августа 2010

Ничего из вышеперечисленного.

Сохраняйте данные нормализованными и создавайте отдельные индексы FT для каждой нормализованной таблицы. При запросе данных запрашивайте соответствующую таблицу. Если вы хотите, чтобы запрос охватывал несколько таблиц (например, если город, страна или департамент содержат «Йорк»), используйте обычные операторы запроса UNION для агрегирования поиска по нескольким таблицам. Именно так работает FT, поэтому следите за тем, чтобы ваш дизайн соответствовал тому, как работает эта функция. Не пытайтесь обмануть, вы только собираетесь сжечь себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...