Я реализую функцию поиска в веб-приложении и включил полнотекстовый поиск в ряде столбцов в моей таблице.
Один из этих столбцов имеет тип данных «xml», и в настоящее время я использую XQuery, чтобы убедиться, что поиск выполняется только в определенных узлах.
Вот пример части XQuery SQL-запроса (SQL-Query — это сгенерированный/динамический запрос)
XMLContent.exist('/Template/Fields/Field/Text/text()[contains(.,"search-phrase1") or contains(.,"search-phrase2") or contains(.,"etc.")]') = 1
Динамический запрос может включать в запрос любое количество поисковых фраз.
Когда я учился писать этот запрос, у меня сложилось впечатление, что он использует полнотекстовый поиск, но я попытался удалить полнотекстовый индекс в столбце XMLContent, и запрос все еще выполняется.
Мой вопрос заключается в том, быстрее ли использовать функцию CONTAINS в sql для поиска всего столбца XMLContent или быстрее, когда я сужаю ее до определенных узлов в xml?
Имеют ли разные методы свои преимущества, за исключением того, что CONTAINS проверяет все узлы, а не указанный?