如何优化查询?
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 上有一个覆盖索引......然后用你需要的特定列替换“*”。
我在 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 上有一个覆盖索引......然后用你需要的特定列替换“*”。