почему LIKE "% ..." не годится? Вы не можете использовать какой-либо индекс и должны сканировать всю таблицу.
вот хороший пример:
иди в телефонную книгу и найди мне все
имена, которые соответствуют "% ch". Что будет
занять много времени, так как вы не
может использовать кластерный индекс и должен сканировать всю книгу!
Учитывая данные 'abcdefg'
WHERE Column1 LIKE '%cde%' --can't use an index
WHERE Column1 LIKE 'abc%' --can use and index
WHERE Column1 Like '%defg' --can't use an index, but see note below
Примечание. Если у вас есть важные запросы, требующие «% defg», вы можете использовать постоянный вычисляемый столбец, в котором вы REVERSE () столбец, а затем индексировать его. Затем вы можете запросить:
WHERE Column1Reverse Like REVERSE('defg')+'%' --can use the persistent computed column's index
чтобы добавить сохраненный вычисляемый столбец (который переворачивает строку) и индексировать по нему, используйте этот код:
ALTER TABLE YourTable ADD ReversedYourString AS REVERSE(YourString) PERSISTED
CREATE NONCLUSTERED INDEX IX_YourTable_ReversedYourString
ON YourTable (ReversedYourString)