Как построить SQL-запрос, который использует полнотекстовый поиск, если индекс существует? - PullRequest
0 голосов
/ 13 марта 2009

Мне нужно создать запрос sqlserver, который, если текстовый столбец имеет полнотекстовый индекс, будет использоваться, если нет, то запрос будет понижен до O (N²) подхода LIKE '%word%'?

Я полагаю, что ответ будет примерно таким:

IF has_full_text_index('mycolumn')
    select mytable_id from mytable where contains(mycolumn, 'word')
ELSE
    select mytable_id from mytable where mycolumn like '%word%'
ENDIF

Запрос будет сгенерирован программой. В запросе всегда будет только одно слово для сопоставления. Проверка на наличие полнотекстового индекса в столбце должна быть быстрой.

1 Ответ

1 голос
/ 13 марта 2009

Хотя я склонен согласиться с Кеном, что вы будете знать, какая из ваших таблиц относится к полнотекстовому каталогу, вы можете запросить

sp_help_fulltext_tables {catalogname}

для таблиц в вашем каталоге. (через MSDN )

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