Подобно операторам, которые используют подстановочный знак слева, нельзя использовать индекс, если он определен для столбца:
WHERE column LIKE '%abc'
WHERE column LIKE '%abc%'
Но любой из них может использовать индекс:
WHERE column LIKE 'abc%'
WHERE column LIKE 'abc'
Откровенноиспользуйте LIKE для очень простого текстового поиска - если вам действительно нужен текстовый поиск, который работает хорошо, посмотрите на Полнотекстовый поиск (FTS).Полнотекстовый поиск имеет свои собственные индексы.
Решение действительно сводится к оптимизатору, какой индекс использовать, но к чему-то, что гарантирует, что индекс не будет использовать его для переноса значений столбцов в вызовах функций.Это, например, не будет использовать индексы:
WHERE CHARINDEX(column, 'abc') > 0
WHERE CAST(column AS DATETIME) <= '2010-01-01'
Везде, где вы манипулируете данными таблиц - особенно при изменении типа данных - будет делать индекс бесполезным, потому что индекс имеет неизмененные значения и нет никакого способаотносятся к измененным данным.