如何优化查询?

How can query be optimized?

我在 table 上有一个简单的 select 查询,但在 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

这个查询没有给我任何结果。 我期待一个看起来比我拥有 returns 结果的查询更聪明的查询。有帮助吗?

OR 条件下使用 like operator

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

LIKE 运算符不是问题所在。这是领先的外卡。除非你不能摆脱这些,否则你的优化选项将仅限于确保你在 EntryTime 上有一个覆盖索引......然后用你需要的特定列替换“*”。