Как можно оптимизировать запрос? - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть простой запрос на выборку для таблицы, но с разными значениями в операторе LIKE.Запрос выглядит следующим образом:

SELECT *
FROM BatchServices.dbo.TaskLog
WHERE EntryTime BETWEEN '20190407' AND '20190408' AND
      TaskGroup LIKE '%CSR%' AND
      (LogText LIKE '%error%' OR LogText LIKE '%fail%')

Этот запрос в порядке и возвращает ожидаемые результаты, но я не хочу иметь несколько LIKE в запросе, поэтому я уже пробовал что-то вроде

SELECT *
from BatchServices.dbo.TaskLog
WHERE taskgroup = 'csr' AND
      LogText IN ( '%error%','%fail%') AND 
      EntryTime>'2019-04-07'
ORDER BY EntryTime ASC

Этот запрос не дает мне никаких результатов.Я ожидаю запрос, который выглядит умнее, чем тот, который у меня есть, который возвращает результат.Любая помощь?

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

использование like operator с OR условием

SELECT * from BatchServices.dbo.TaskLog WHERE taskgroup ='csr' AND 
(LogText like '%error%' or LogText like '%fail%')
AND EntryTime>'2019-04-07' 
ORDER BY EntryTime ASC
0 голосов
/ 09 апреля 2019

Операторы LIKE не являются проблемой. Это ведущие дикие карты. Если вы не можете избавиться от них, ваши возможности оптимизации будут ограничены гарантией наличия у вас индекс покрытия для EntryTime ... Это и заменой «*» на нужные вам столбцы.

...