这个查询需要一个小时
select *,
unix_timestamp(finishtime)-unix_timestamp(submittime) timetaken
from joblog
where jobname like '%cas%'
and submittime>='2013-01-01 00:00:00'
and submittime<='2013-01-10 00:00:00'
order by id desc limit 300;
但是具有一个submittime
的相同查询在大约 0.03 秒内完成
该表有 210 万行
知道是什么导致了问题或如何调试
最佳答案
您的第一步应该是使用 MySQL EXPLAIN查看查询在做什么。它可能会让您了解如何解决您的问题。
我的猜测是 jobname LIKE '%cas%'
是最慢的部分,因为您正在进行通配 rune 本搜索。在此处添加索引甚至无济于事,因为您有前导通配符。有没有办法在没有像这样的前导通配符的情况下执行此查询?此外,在 submittime
上添加索引可能会提高此查询的速度。
关于mysql SQL 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14384378/