mysql SQL 优化

标签 mysql sql

这个查询需要一个小时

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/

相关文章:

mysql - Codeigniter从数据库中的多个表中选择数据|没有加入

用于存储负数的 MySQL 数据类型

mysql - 将 MySQL 表与其自身连接

php - 使用一个 sql 查询的结果来获取另一个 sql 查询的结果 - moveNext 放在哪里

MySQL 左连接带有子 IsDeleted 标志

sql - Rails 查询到 SQL 语句

python - 在Django中显示mysql数据库的数据

php - 只逃避必要的东西,这可能吗?

php - PHP中的面向对象编程不清楚

SQL查询根据两列对日期进行排序