У меня есть SQL-запрос, который использует как стандартные предложения WHERE, так и предложения полнотекстового индекса CONTAINS. Запрос строится динамически из кода и включает в себя переменное количество предложений WHERE и CONTAINS.
Чтобы запрос был быстрым, очень важно выполнить поиск по полнотекстовому индексу до применения остальных критериев.
Однако SQL Server предпочитает обрабатывать предложения WHERE перед предложениями CONTAINS, что вызывает сканирование таблиц, и запрос выполняется очень медленно.
Я могу переписать это, используя два запроса и временную таблицу. Когда я это делаю, запрос выполняется в 10 раз быстрее. Но я не хочу делать это в коде, который создает запрос, потому что он слишком сложный.
Есть ли способ заставить SQL Server обрабатывать КОНТЕЙНЫ прежде всего? Я не могу форсировать план (USE PLAN), потому что запрос строится динамически и сильно варьируется.
Примечание. У меня та же проблема на SQL Server 2005 и SQL Server 2008.