如何优化查询?

时间:2019-04-09 10:52:06

标签: sql sql-server sql-like sql-in

我在一个表上有一个简单的选择查询,但是在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 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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