У меня есть запрос, который выглядит так
SELECT TOP 1000 C.iId_company
FROM dbo.Company AS C WITH(NOLOCK)
WHERE
C.col_1 LIKE 'something%'
OR C.col_1 LIKE 'something2%'
OR C.col_1 LIKE 'something3%'
OR C.col_2 LIKE 'something%'
OR C.col_2 LIKE 'something2%'
OR C.col_2 LIKE 'something3%'
Я попытался сделать этот запрос быстрее и попытался добавить индексы для col_1 и col_2. Если я закомментирую условия, касающиеся col_2, запрос будет очень быстрым, то же самое относится и к col_1 (если я закомментирую условия относительно col_1). Но когда я оставляю это так, это та же самая старая история, очень медленная.
Что я подозреваю при рассмотрении плана выполнения, так это то, что одновременно используется только один индекс, а SQL выполняет сканирование подмножества после использования первого индекса. Я пробовал разные вещи (делает индекс обоих столбцов, но тоже не работает)
На самом деле мое единственное решение - разделить запрос и использовать UNION. Есть ли способ сделать такой запрос быстрее и сохранить его в одном запросе?