Полнотекстовые индексы отличаются от обычных индексов. Рассмотрим эти два, казалось бы, эквивалентных выражения where:
WHERE [mycolumn] LIKE '%' + @MyValue + '%'
WHERE CONTAINS([mycolumn], @MyValue)
Первый из них не будет использовать любой индекс, даже обычный, который вы указали в своем вопросе. Это не считается sargable . Последний специально указывает серверу использовать полнотекстовый индекс.
С другой стороны, это будет работать с обычным индексом, но игнорирует любой доступный полнотекстовый индекс:
WHERE [mycolumn] LIKE @MyValue + '%'
Нормальные индексы работают, потому что они упорядочены . Когда вы переходите к поиску значения в индексе, вы можете использовать двоичный поиск, b * -дерево или аналогичный алгоритм для более быстрого поиска или отклонения вашего соответствия, а при сравнении для объединения или диапазона сервер может «пройти» индекс для эффективной проверки ряда значений.
Полнотекстовые индексы нельзя просто упорядочить, потому что вы должны иметь возможность осуществлять поиск в середине содержимого так же быстро, как и в начале. Таким образом, они намного сложнее .